记录内核跟踪记录

内核会将记录写入内部缓冲区,以捕获各种操作的轨迹。然后,您可以在 Perfetto 等工具中检索、输出和查看这些轨迹。

内核轨迹格式

内核轨迹格式使用 FXT

轨迹缓冲区大小

轨迹缓冲区的大小在启动时固定,由 ktrace.bufsize 内核命令行参数控制。其值为缓冲区大小(以 MB 为单位)。默认值为 32MB。

控制要跟踪的内容

您可以通过内核命令行参数 ktrace.grpmask 控制要跟踪的内容。该值指定为 0xNNN,是启用跟踪组的位掩码。请参阅 system/ulib/zircon-internal/include/lib/zircon-internal/ktrace.h 中的 KTRACEGRP 值。默认情况下,值为 0xfff,用于跟踪所有内容。

您还可以使用 ktrace 命令行实用程序动态控制要跟踪的内容。

ktrace 命令行实用程序

您可以使用 ktrace 命令行实用程序控制内核跟踪。

使用 ktrace --help 查看所有可用命令:

ktrace --help

您应该会看到如下所示的输出:

Usage: ktrace [options] <control>
Where <control> is one of:
  start <group_mask>  - start tracing
  stop                - stop tracing
  rewind              - rewind trace buffer
  written             - print bytes written to trace buffer
    Note: This value doesn't reset on "rewind". Instead, the rewind
    takes effect on the next "start".
  save <path>         - save contents of trace buffer to <path>

Options:
  --help  - Duh.

查看内核轨迹

您可以使用 ui.perfetto.dev 查看轨迹。您需要先捕获轨迹,然后才能查看轨迹。

  1. 在目标设备上启动轨迹记录:

    ktrace start 0xfff
    ... do something ...
  1. 停止跟踪:

    ktrace stop
  2. 将轨迹保存到 /tmp/save.ktrace

    ktrace save /tmp/save.ktrace
  3. 使用 fx cp 将文件复制到开发主机:

    fx cp --to-host /tmp/save.ktrace save.fxt
    
  4. ui.perfetto.dev 中查看轨迹文件。

与 Fuchsia Tracing 搭配使用

Fuchsia 的跟踪系统支持通过 ktrace_provider 跟踪提供程序收集内核轨迹记录。如需详细了解 Fuchsia 的跟踪系统,请参阅 Fuchsia 跟踪系统