Androd 本身提供了两款工具方便我们 debug android application and profile its performance: traceview 和 dmtracedump。官方文档点击
Here
要想正确使用需要做一些准备工作:
(1) 利用 SDK所带的工具 mksdcard
$ ./mksdcard 256M /home/user/YOUR_SDCARD_PATH
(2) 配置eclipse
Run/Debug Configurations 中Target标签 Additional Emulator Command Line Options条目中添加:
-sdcard /home/user/YOUR_SDCARD_PATH
然后点击 Apply
运行模拟器时即可使用生成的sdcard了
执行完后会在/sdcard目录中生成 YourAppName.trace文件,使用
$ adb pull /mnt/sdcard/YourAppName
将文件导出,然后进行分析
$ ./traceview YourAppName.trace
$ ./dmtracedump -g output.png YourAppName.trace
关于各项数据代表的意义可以阅读官网
要想正确使用需要做一些准备工作:
1. Create sdcard
需要生成sdcard目录,并配置 eclipse运行模拟器时使用sdcard(1) 利用 SDK所带的工具 mksdcard
$ ./mksdcard 256M /home/user/YOUR_SDCARD_PATH
(2) 配置eclipse
Run/Debug Configurations 中Target标签 Additional Emulator Command Line Options条目中添加:
-sdcard /home/user/YOUR_SDCARD_PATH
然后点击 Apply
运行模拟器时即可使用生成的sdcard了
2. Creating Trace File
在需要进行分析的代码处添加如下代码// begin tracing
Debug.startMethodTracing("YourAppName");
// ...
// stop tracing
Debug.stopMethodTracing();
通常可以在 onCreate()处调用start, onDestory()处调用 stop,主要还是根据需求。
执行完后会在/sdcard目录中生成 YourAppName.trace文件,使用
$ adb pull /mnt/sdcard/YourAppName
将文件导出,然后进行分析
3. Analytical trace file
下面即可利用traceview和dmtracedump分析生成的 trace文件$ ./traceview YourAppName.trace
$ ./dmtracedump -g output.png YourAppName.trace
关于各项数据代表的意义可以阅读官网
4. Known issue
关于官网说的两个issue,暂时也用不到,我自己比较郁闷的是在分析 android-x86 ics时,生成出的 trace 文件,用 traceview打不开,会出现如下报错,但用模拟器生成的就没问题,所以很纠结:
Exception in thread "main" java.lang.RuntimeException: Method exit (android/graphics/Matrix.isIdentity ()Z) does not match current method (android/graphics/Matrix.native_isIdentity (I)Z) at com.android.traceview.ThreadData.exit(ThreadData.java:105) at com.android.traceview.DmTraceReader.parseData(DmTraceReader.java:319) at com.android.traceview.DmTraceReader.generateTrees(DmTraceReader.java:92) at com.android.traceview.DmTraceReader.<init>(DmTraceReader.java:87) at com.android.traceview.MainWindow.main(MainWindow.java:270)