内核会将记录写入内部缓冲区,以捕获各种操作的轨迹。然后,您可以在 Perfetto 等工具中检索、打印和查看这些轨迹。
内核轨迹格式
内核轨迹格式使用 FXT。
轨迹缓冲区大小
轨迹缓冲区的大小在启动时固定,由 ktrace.bufsize 内核命令行参数控制。其值是缓冲区空间(以兆字节为单位)。默认值为 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 查看轨迹。您需要先捕获轨迹,然后才能查看轨迹。
在目标设备上开始跟踪:
ktrace start 0xfff ... do something ...停止轨迹:
ktrace stop将轨迹保存到
/tmp/save.ktrace:ktrace save /tmp/save.ktrace使用
fx cp将文件复制到开发主机:fx cp --to-host /tmp/save.ktrace save.fxt在
ui.perfetto.dev中查看轨迹文件。
与 Fuchsia 跟踪搭配使用
Fuchsia 的跟踪系统支持通过 ktrace_provider 跟踪提供方收集内核跟踪记录。如需详细了解 Fuchsia 的跟踪系统,请参阅 Fuchsia 跟踪系统。