在命令行上捕获系统跟踪信息

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

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

要运行 systrace,请完成以下步骤:

  1. 从 Android Studio 下载并安装最新的 Android SDK Tools
  2. 安装 Python 并将其添加到工作站的执行路径中。
  3. 使用 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
    

提示:如果要在跟踪输出中查看任务名称,必须在命令参数中添加 sched 类别。

要查看已连接设备支持的类别列表,请运行以下命令:

$ python systrace.py --list-categories
    

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

全局选项

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

命令和命令选项

命令和选项 说明
-o file 将 HTML 跟踪报告写入指定的文件。如果您未指定此选项,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)都包括跟踪检测调用,这些调用可在您启用应用级跟踪时提供有用的信息。如需了解详情,请转到有关介绍检测应用代码的部分。
--from-file=file-path 根据文件(例如包含原始跟踪数据的 TXT 文件)创建互动式 HTML 报告,而不是运行实时跟踪。
-e device-serial
| --serial=device-serial
在已连接的特定设备(由对应的设备序列号标识)上进行跟踪。
categories 包含您指定的系统进程的跟踪信息,如 gfx 表示用于渲染图形的系统进程。您可以使用 -l 命令运行 systrace,以查看已连接设备可用的服务列表。