内核会将记录写入内部缓冲区,以捕获各种操作的轨迹。然后,您可以在 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
查看轨迹。您需要先捕获轨迹,然后才能查看轨迹。
在目标设备上启动轨迹记录:
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 Tracing 搭配使用
Fuchsia 的跟踪系统支持通过 ktrace_provider
跟踪提供程序收集内核轨迹记录。如需详细了解 Fuchsia 的跟踪系统,请参阅 Fuchsia 跟踪系统。