利用 traceview和 dmtracedump 分析 android 程序
2012-03-28 13:09
691 查看
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
关于各项数据代表的意义可以阅读官网
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)
要想正确使用需要做一些准备工作:
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)
相关文章推荐
- Android程序调试工具TraceView和dmtracedump
- Android 性能优化工具 Traceview和dmtracedump
- Android代码调试工具 traceview 和 dmtracedump的波折演绎
- Android代码调试工具 traceview 和 dmtracedump的波折演绎
- [Android]Android代码调试工具: Traceview和Dmtracedump
- 分析与Traceview和dmtracedump
- Android代码调试工具 traceview 和 dmtracedump的波折演绎 .
- android的dmtracedump工具生成trace文件图片 'dot' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
- Android官方命令深入分析之dmtracedump
- Android官方命令深入分析之dmtracedump
- 【Android】SDK工具学习 - Traceview 和 dmtracedump
- Android代码调试工具 traceview 和 dmtracedump的波折演绎
- Android代码调试工具 traceview 和 dmtracedump的波折演绎 .
- Android代码调试工具 traceview 和 dmtracedump的波折演绎 .
- Android代码调试工具 traceview 和 dmtracedump的波折演绎
- Android代码调试工具 traceview 和 dmtracedump的波折演绎
- Android代码调试工具 traceview 和 dmtracedump的波折演绎
- Android代码调试工具 traceview 和 dmtracedump的波折演绎
- 详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!
- (转)【Android游戏开发之十】(优化处理)详细剖析Android Traceview 效率检视工具!分析程序运行速度!并讲解两种创建SDcard方式!