从命令行捕获系统跟踪

systrace 命令会调用 Systrace 工具,该工具可让您在系统级别收集和检查设备上运行的所有进程的时序信息。

本文档介绍了如何从命令行生成 Systrace 报告。在运行 Android 9 (API 级别 28) 或更高版本的设备上,您还可以使用 系统跟踪应用生成 Systrace 报告。

为了运行 systrace,请完成以下步骤

  1. 在 Android Studio 中,下载并安装最新版 Android SDK Tools
  2. 安装 Python 并将其添加到工作站的 PATH 环境变量中。
  3. android-sdk/platform-tools/ 添加到您的 PATH 环境变量中。此目录包含 Android Debug Bridge 二进制文件 (adb),该文件由 systrace 程序调用。
  4. 使用 USB 调试连接将运行 Android 4.3 (API 级别 18) 或更高版本的设备连接到您的开发系统。

systrace 命令包含在 Android SDK Tools 软件包中,位于 android-sdk/platform-tools/systrace/

语法

要为应用生成 HTML 报告,您需要使用以下语法从命令行运行 systrace

python systrace.py [options] [categories]

例如,以下命令会调用 systrace 以记录设备活动并生成名为 mynewtrace.html 的 HTML 报告。此类别列表是大多数设备的合理默认列表。

$ python systrace.py -o mynewtrace.html sched freq idle am wm gfx view \
    binder_driver hal dalvik camera input res memory

提示: 如果您想在跟踪输出中看到任务名称,则必须在命令参数中包含 sched 类别。

要查看您的联网设备支持的类别列表,请运行以下命令

$ python systrace.py --list-categories

如果您未指定任何类别或选项,systrace 会生成一份报告,其中包含所有可用类别并使用默认设置。可用类别取决于您使用的联网设备。

全局选项

全局选项 说明
-h | --help 显示帮助消息。
-l | --list-categories 列出您的联网设备可用的跟踪类别。

命令和命令选项

命令和选项 说明
-o file 将 HTML 跟踪报告写入指定的 file。如果您未指定此选项,systrace 会将报告保存到与 systrace.py 相同的目录中,并将其命名为 trace.html
-t N | --time=N 跟踪设备活动时长为 N 秒。如果您未指定此选项,systrace 会提示您从命令行按 Enter 键来结束跟踪。
-b N | --buf-size=N 使用 N KB 的跟踪缓冲区大小。此选项可让您限制在跟踪期间收集的数据的总大小。
-k functions
| --ktrace=functions
跟踪以逗号分隔列表形式指定的特定内核函数的活动。
-a app-name
| --app=app-name
为应用启用跟踪,应用以逗号分隔的 进程名称列表形式指定。应用必须包含来自 Trace 类的跟踪插桩调用。每当您分析您的应用时,都应指定此选项,因为许多库(例如 RecyclerView)都包含跟踪插桩调用,在启用应用级跟踪时可提供有用的信息。如需了解详情,请参阅 定义自定义事件

要跟踪运行 Android 9 (API 级别 28) 或更高版本的设备上的所有应用,请传递通配符 "*"(含引号)。

--from-file=file-path 从文件(例如包含原始跟踪数据的 TXT 文件)创建交互式 HTML 报告,而不是运行实时跟踪。
-e device-serial
| --serial=device-serial
在特定联网设备上进行跟踪,该设备通过其 设备序列号识别。
类别 包含您指定的系统进程的跟踪信息,例如 gfx(用于渲染图形的系统进程)。您可以运行 systrace,并使用 -l 命令查看联网设备可用的服务列表。