欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android 调试之dmtracedump,方法调用分析

程序员文章站 2022-05-12 14:56:26
...

使用dmtracedump可以追溯方法的调用。生成函数调用关系图。

命令行输入dmtracedump,如果提示command not found。如下图,说明环境变量没有配置。Android 调试之dmtracedump,方法调用分析

  • 配置环境变量:

  1. dmtracedump执行文件存在Android sdk 的platform-tools文件夹下
  2. export PATH=$PATH:/Users/wuxinglin/Lib/Android/sdk/platform-tools
  3. 执行dmtracedump,打印信息如下,配置成功Android 调试之dmtracedump,方法调用分析
  • 生成图片输出

dmtracedump -g outfile trace-file-name

如:dmtracedump -g methodTrace.png dmtrace.trace

dmtracedump -g methodTrace.png dmtrace.trace

输入命令后等待执行结束,发现命令行输出错误信息sh: dot: command not found,并退出。发现并没有生成我们的图片文件(methodTrace.png)。

这是因为没有安装graphviz,graphviz是开源的图形绘制工具。dmtracedump工具使用Graphviz Dot程序创建图形输出

graphviz安装方法(Mac):brew install graphviz

安装完成后,再执行dmtracedump -g methodTrace.png dmtrace.trace 命令,发现已经生成methodTrace.png。

Android 调试之dmtracedump,方法调用分析

  • 生成.trace文件

又是怎么生成我们命令中trace文件呢(dmtrace.trace)?

这就需要我们开发时,在需要追踪的方法运行之前加上Debug.startMethodTracing(),之后加上Debug.stopMethodTracing()。

在Debug.stopMethodTracing()方法被执行之后,在sdcard/Android/data/packagename/files文件夹下倒出dmtrace.trace。

Android 调试之dmtracedump,方法调用分析