Traceview 已弃用。如果您使用的是 Android Studio 3.2 或更高版本,则应改用 CPU 分析器 检查 .trace
文件(通过 使用 Debug
类对您的应用进行检测 捕获),记录新的方法跟踪,保存 .trace
文件,并检查应用进程的实时 CPU 使用情况。
Traceview 是一种工具,它提供跟踪日志的图形表示。您可以通过使用 Debug
类对代码进行检测来生成日志。此跟踪方法非常精确,因为您可以精确指定要在代码中的哪个位置开始和停止记录跟踪数据。如果您尚未生成这些跟踪日志并将其从连接的设备保存到本地计算机,请转到 通过对应用进行检测生成跟踪日志。使用 Traceview 检查这些日志有助于您调试应用并分析其性能。
提示:您可以 使用命令行中的 dmtracedump
生成跟踪日志文件的图形调用堆栈图。
如果您不需要查看通过使用 Debug
类对应用进行检测记录的跟踪日志,则可以使用 Android Studio 3.0 及更高版本中包含的 CPU 分析器 检查应用的线程并记录方法跟踪。
使用 Traceview 打开跟踪日志
要从 Android Studio 中使用 Traceview 打开跟踪日志,请按如下操作
- 启动 Android 设备监控器。
- 在 Android 设备监控器中,选择文件 > 打开文件。
- 导航到要检查的
.trace
文件。 - 点击打开。
注意:如果您尝试查看使用代码缩减功能构建的应用(例如发布版本)的跟踪日志,则某些方法和成员名称可能会被混淆。您可以使用 ProGuard mapping.txt
文件找出原始未混淆的名称。有关此文件的更多信息,请参阅 解码混淆的堆栈跟踪。
注意:从命令行运行 traceview
已弃用。
Traceview 概述
打开跟踪日志后,Traceview 使用以下两个窗格显示日志数据
以下部分提供有关 traceview 输出窗格的其他信息。
时间线窗格
图 1 显示了时间线窗格的特写。每个线程的执行情况都显示在其自己的行中,时间流逝方向向右。每个方法都显示为不同的颜色。第一行下面的细线显示所选方法的子项(从进入到退出)。
概要窗格
如图 2 所示,概要窗格提供了系统在跟踪日志期间执行的每个方法的列表以及执行这些方法所花费的时间。调用另一个方法的方法称为父项,父项调用的方法称为其子项。当您通过单击选择某个方法时,它会在两个单独的节点下显示其父项和子项。
对于每个方法(顶级节点),表格都显示其包含时间和排除时间(以毫秒为单位)以及总时间的百分比。排除时间是指执行方法自身代码所花费的时间,而包含时间是指执行方法自身代码以及执行其子项代码所花费的时间。时间信息也以 CPU 时间和实际时间来报告。CPU 时间仅考虑线程主动使用 CPU 时间的时间,而实际时间提供从应用进入方法到退出该方法的绝对时间信息,无论线程是活动状态还是休眠状态。
对于概要窗格中的每个顶级节点,表格中的调用 + 递归调用,调用/总数列(图 2 中未显示)报告对该方法的调用次数和递归调用次数。或者,对于父项和子项方法,此列显示方法是顶级节点中的方法的子项或父项的调用次数。
Traceview 已知问题
Traceview 日志记录对线程的处理不佳,导致以下问题
- 如果线程在分析期间退出,则不会发出线程名称(在 Android 5.1 及更高版本中已修复);
- VM 会重用线程 ID。如果一个线程停止而另一个线程启动,则它们可能会获得相同的 ID。