Android TraceView

Android TraceView

TraceView是一个分析代码执行时间的图形化工具,使用它可以帮助我们调试应用以及分析应用性能

如何使用TraceView

  • 通过Android Device Monitor。进入Android Device Monitor之后,打开DDMS,选择你的应用进程,然后点击“Start Method Profiling”按钮开始,再次点击按钮TraceView工作结束。DDMS会自动加载TraceView图。
  • 通过添加Trace code。在你的应用代码块的开始和结束分别添加android.os.Debug.startMethodTracing(String traceName)
    以及android.os.Debug.stopMethodTracing(),当运行结束后,就会有一个traceName.trace文件在/sdcard目录中生成。然后用Android Device Monitor打开traceName.trace文件即可。注意:需要在应用中添加WRITE_EXTERNAL_STORAGE权限
        Debug.startMethodTracing("perfTrace");
        mProgressBar = (ProgressBar) findViewById(R.id.id_progressbar);
        mHideHandler = new Handler() {
            @Override
            public void dispatchMessage(Message msg) {
                super.dispatchMessage(msg);

                if (msg.what == MSG_HIDE)
                    mProgressBar.setVisibility(View.GONE);
                Debug.stopMethodTracing();
            }
        };

分析TraceView

TraceView图解析

这是我们通过上文中的代码得到的TraceView图,当我们点击Name列中的方法名时,
会出现该方法的Parents以及Children。


  • Parents表示调用这个方法的方法,也就是父方法
  • Children表示这个方法中调用的其他方法,也就是子方法
    重点关注红色框中的时间含义
  • Incl Cpu Time %:
    该方法的执行时间(self + Children)占Trace代码段的执行之间的比重。
  • Incl Cpu Time:该方法的执行时间(self + Children),单位ms
  • Excl Cpu Time %:该方法self执行时间占Trace代码段的执行之间的比重
  • Excl Cpu Time:该方法self执行时间
  • Incl Real Time %:该方法的执行经历的墙上时间(self + Children)占Trace代码段的经历的墙上时间的比重
  • Incl Real Time:该方法的执行经历的墙上时间(self + Children)占Trace代码段的执行之间的比重。
  • Excl Real Time %:该方法的执行经历的墙上时间(self)占Trace代码段的经历的墙上时间的比重
  • Excl Real Time:该方法的执行经历的墙上时间(self),不包括子函数的经历时间
  • Calls + Recur Calls/Total:方法的调用次数+递归调用次数
  • Cpu Time/Call:方法平均每次执行所消耗的Cpu时间 = Incl Cpu Time / Calls
  • Real Time/Call:方法平均每次执行所经历的墙上时间 = Incl Real Time / Calls

我们在分析方法执行时,应重点关注方法执行的相对耗时(也就是比重),以及方法调用次数等。方法的绝对执行时间受手机性能影响,只作参考。通常我们通过TraceView得到的只是Java层的方法执行情况,还有一个startNativeTracing,只能在模拟器上使用,但是功能更为强大,可以Trace kernel执行等。

TraceView文件生成html

在TraceView图中,我们不能搜索函数,为了便于分析问题,我们可以利用sdk/platform-toos/dmtracedump工具将traceView得到的*.trace文件转化为html文件
使用如下命令

D:\android_debug\Traceview>dmtracedump -h perfTrace.trace > perfTrace.html

得到的html图,可以用chrome或者猎豹等浏览器打开


TraceView文件导出函数调用图

更为强大的是我们可以利用dmtracedump工具生成函数调用图,
不过需要安装Graphviz(帮助生成函数调用图),安装方法很简单,Google下Graphviz即可,安装以后添加环境变量。这样我们就可以用dmtracedump工具生成函数调用图了。

D:\android_debug\Traceview>dmtracedump -g perfTrace.png perfTrace.trace

小结

使用TraceView不仅可以分析应用性能问题,还可以帮助我们学习代码的workflow等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • 1.TraceView 是什么 TraceView 是AndroidSDK 中内置的一个工具,它可以加载trace...
    wintersweett阅读 1,514评论 0 0
  • 要么读书要么旅行 身体和灵魂总要有一个在路上 高一下学期我们分班考,那一年我坐第一排,她第四。高中忙忙碌碌的生活,...
    陈哇噻aa阅读 290评论 0 9
  • 1你现在读的书在你将来未必都能用上,不过你得相信你都不会白读。 2这世界上没有后悔药,所以你得对你自己负责。你的每...
    公子_瑾瑜阅读 452评论 0 2
  • 【每日小承诺】 新1周内对待遇到的任何人任何事,特别是对孩子的顽皮不急躁,不焦虑(第19天); 新一周内对不按自己...
    秀芝_11c0阅读 115评论 0 0
  • 陪孩子长大·第二章 空间无价 16.学会说爱 2017-11-29 李子勋 中国心宇心理网 第二章 空间无价 16...
    暖阳_1332阅读 452评论 0 0