使用集成开发工具启动TraceView
- 进入DDMS视图&&要分析的进程处于debug模式&&跳转到要分析的页面
- 如下图所示,点击start Method profiling 按钮,开始获取数据
弹出Profiling Options对话框,这里使用默认值“Sample base Profiling”.- 等待5秒后,如下图所示,点击“Stop base Profiling”
,打开如下页面:
ok,到这里就获取到了TraceView内容了。
添加Debug方法获取/分析TraceView文件
- 在要调试的页面中要调试方法的起止位置添加
// start tracing to "/sdcard/aaa.trace"
Debug.startMethodTracing("aaa");
// stop tracing
Debug.stopMethodTracing();
没有明确目标的话,不妨将这两个方法分别放入Activity的onCreate和onDestory里面。
- 在debug状态执行该方法(通俗的讲使用相关操作点击等让该方法执行)
- 将生成的文件上传到计算机D盘下
adb pull /sdcard/aaa.trace D:/
- 定位到~/sdk/tools ,执行monitor,在打开的页面执行File->Open Files…
ok,打开了!
讲述一下这个页面分析
- 整个分析页面分为上下两部分。上面部分:时间线面板;下面部分:轮廓面板。
- 时间线面板左侧是在要分析的方法执行期间运行的线程,右侧是该线程对应的方法执行情况。从左到右也代表了时间的流逝,每一种颜色代表了一种方法。颜色块的在水平方向上的长度也就是方法执行的时间。
- 轮廓面板展示的内容就很丰富了,展示了各个方法执行时占用的资源情况。这里强调一下inclusive time 和exclusive time。inclusive time指的是该方法执行的总时间(包括它调用的其他方法的执行时间),exclusive time指的是该方法执行的时间(不包括它调用的其他方法的执行时间)。要对哪一个属性进行排序,在该属性上单击即可。在左侧的方法名上单击就会将该方法展开,其中包括该方法Parent(调用该方法的方法)和Children(该方法内调用的其他方法)。对某一个参数进行排序后,然后对占用时间比较多的方法进行层层展开,基本上就可以定位问题的出处了!
翻译地址
http://developer.android.com/tools/debugging/debugging-tracing.html#runningtraceview