dmtracedump

dmtracedump 是一种用于从跟踪日志文件生成图形化的调用堆栈图的工具。此工具使用 Graphviz Dot 实用工具创建图形化的输出,因此您必须先安装 Graphviz,才能运行 dmtracedump。如果尚未生成跟踪日志并将其从连接的设备保存到本地计算机,请转到通过检测您的应用生成跟踪日志

dmtracedump 工具以树形图的形式生成调用堆栈数据,其中每个节点表示一个方法调用。它使用箭头显示调用流程(从父节点到子节点)。下图显示了 dmtracedump 的示例输出。

dmtracedump 工具在 Android SDK Tools 软件包中提供,并且可以在 android-sdk/platform-tools/ 中找到。

语法

dmtracedump 的用法如下:

    dmtracedump [-ho] [-s sortable] [-d trace-base-name] [-g outfile] trace-base-name
    

然后,此工具会从 trace-base-name.datatrace-base-name.key 加载跟踪日志数据。

全局选项

全局选项 说明
-h 开启 HTML 输出
-o 转储跟踪文件,而不是进行剖析

命令和命令选项

命令和选项 说明
-d trace-base-name 以此跟踪名称作为参数运行 diff
-g outfile 生成 outfile 输出
-s sortable 可排序 JavaScript 文件所在位置的基址
-t percent 在图表中包含子节点的最低阈值(子节点的包含时间显示为占父节点包含时间的百分比)。如果未使用此选项,则默认阈值为 20%。

输出

图 1. dmtracedump 的屏幕截图

对于此图表中的每个节点,dmtracedump 都会显示以下信息:

    ref callname (inc-ms, exc-ms,numcalls)
    
  • ref - 跟踪日志中使用的调用引用号
  • inc-ms - 包含时长(在方法中花费的毫秒数,包括所有子方法)
  • exc-ms - 独占时长(在方法中花费的毫秒数,不包括任何子方法)
  • numcalls - 调用次数