您的位置:首页 > 移动开发 > Android开发

利用 traceview和 dmtracedump 分析 android 程序

2012-03-28 13:09 691 查看
Androd 本身提供了两款工具方便我们 debug android application and profile its performance: traceview 和 dmtracedump。官方文档点击Here

要想正确使用需要做一些准备工作:

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息