代码改变世界

adb开发工具合集(MAT+Hprof-conv)

2010-06-24 16:21  cppguy  阅读(5240)  评论(0编辑  收藏  举报
使用MAT分析OPhone程序
我们的示例代码已经完成了,大家可以按照上文的步骤自己一步一步来构造自己的音乐播放器,也可以使用附录的源代码包,将工程导入进Eclipse直接体验一下。最后和大家分享一下使用MAT分析OPhone程序的方法。

  通常来说我们调试OPhone程序有两个最常见的方法,一,利用OPhone平台提供的android.util.Log通过log信息来分析 错误发生的原因。 二,通过设置断点,一步一步的跟踪程序发现问题。这两个方法非常有效,介绍相关方法的文章也很多,大家google一下就找到了。
  还有一类常见的问题就是Memory Leak。对内存泄漏这类问题,以上两种方法不是很有效,在DDMS工具里面,我们也基本上只能查看到Heap的使用情况,对分析问题帮助不大。我们可以 利用Eclipse MAT (Memory Analyzer Tool)工具来分析此类问题。Eclipse Memory Analyzer是一个快速并且功能强大的Java heap分析器,能够帮助你查找内存泄漏和减少内存消耗。
  如何安装使用MAT工具,请到http://www.eclipse.org/mat/学习,我们主要来介绍一下如何在OPhone上得到程序运行的heap dump信息。  

  1. Adb shell 登陆到手机或模拟器
  2. Su – 切换到root权限
  3. Chmod 777 /data/misc, 使/data/misc目录具有读写权限
  4. 通过ps命令,找到要调试的程序的pid
  5. Kill -10 pid
  6. 在/data/misc 目录下,会生成文件名类似heap-dump-xxxxx-pidxxx.hprof的文件。
  7. 通过adb pull 命令将.hprof文件拽到pc端
  8. 使用OPhone SDK提供的hprof-conv工具将OPhone生成的hprof文件转换成MAT识别的标准格式。例如:
  1. Hprof-conv  heap-dump-xxxxx-pidxxx.hprof  standard-dump-file.hprof  

   9. 使用MAT工具打开 standard-dump-file.hprof, 你将看到类似下图的分析报告。
     分析报告提供了详尽的heap信息,同时还指出了可疑的内存泄漏的对象。

 

       大家可以根据MAT提供的详细Heap信息,查找漏洞了。