利用 traceview和 dmtracedump 分析 android 程序

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值