步骤一:在系统变量里新建ANDROID_HOME java
步骤二:在系统变量的Path里添加 %ANDROID_HOME%\tools android
//文件默认保存到 sdcard 根目录下,"/sdcard/testTraceView.trace"
Debug.startMethodTracing("testTraceView");
复制代码
其中testTraceView参数是自定义,其实就是生成的TraceView文件的文件名,例如testTraceView.traceshell
Debug.stopMethodTracing();
复制代码
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
复制代码
E/art: Unable to open trace file '/sdcard/testTrace.trace': Permission denied
复制代码
2.打开testTrace.trace文件时报错 ,由于没有执行Debug.stopMethodTracing();bash
Failed to read the trace filejava.io.IOException: Key section does not have an *end marker
at com.android.traceview.DmTraceReader.parseKeys(DmTraceReader.java:420)
at com.android.traceview.DmTraceReader.generateTrees(DmTraceReader.java:91)
at com.android.traceview.DmTraceReader.<init>(DmTraceReader.java:87)
at com.android.traceview.MainWindow.main(MainWindow.java:286)
复制代码
打开testTrace.trace文件时报错的重要提示:Key section does not have an *end marker at com.android.traceview,说明没有添加或者执行Debug.stopMethodTracing();函数
进入到shell模式执行下面的指令语句 在doc命令窗口或者AndroidStudio里Terminal窗口里执行adb shell,下图本人写的demo在AndroidStudio里Terminal窗口查看的截图: 工具
注意:若是Debug.startMethodTracing("testTraceView");startMethodTracing里的参数只填写testTraceView,则上面的截图步骤只须要执行一、2两步就可看到testTraceView.trace文件 须要知道本人为何执行三、4两步,请看本人demo里的startMethodTracing里的参数性能
进入到shell模式执行下面的指令语句 adb pull /sdcard/testTraceView.trace E:\folder命令将testTraceView.trace导出到指定到E盘folder目录。ui
本人demo里须要执行的命令是: adb pull /sdcard/TraceView/MainActivity_2018-12-07_20_29_02.trace E:\folderspa
进入到shell模式执行下面的指令语句 traceview E:\folder\testTraceView.trace.net
下面是分析面板
列名 | 描述 |
---|---|
Name | 该线程运行过程当中所调用的函数名 |
Incl Cpu Time | 某函数占用的CPU时间,包含内部调用其它函数的CPU时间 |
Excl Cpu Time | 某函数占用的CPU时间,但不含内部调用其它函数所占用的CPU时间 |
Incl Real Time | 某函数运行的真实时间(以毫秒为单位),内含调用其它函数所占用的真实时间 |
Excl Real Time | 某函数运行的真实时间(以毫秒为单位),不含调用其它函数所占用的真实时 |
Call+Recur Calls/Total | 某函数被调用次数以及递归调用占总调用次数的百分比 |
Cpu Time/Call | 某函数调用CPU时间与调用次数的比。至关于该函数平均执行时间 |
Real Time | 同CPU Time/Call相似,只不过统计单位换成了真实时间 |
注意:每个Time列还对应有一个用时间百分比来统计的列(如Incl Cpu Time列对应还有一个列名为Incl Cpu Time %的列,表示以时间百分比来统计的Incl Cpu Time)
download.csdn.net/download/ch…
但愿分享Traceview工具的正确使用方式能够为Android开发者提供一些帮助。谢谢!