内核通过将记录写入内部缓冲区来跟踪各种操作,稍后可以对其进行检索、输出和查看。
内核轨迹格式
内核轨迹格式使用 FXT
控制要跟踪的内容
内核命令行参数 ktrace.grpmask
控制了要跟踪的内容。该值指定为 0xNNN,是要启用的跟踪组的位掩码。请参阅 system/ulib/zircon-internal/include/lib/zircon-internal/ktrace.h
中的 *KTRACE_GRP_*值。
默认值为 0xfff,可跟踪所有内容。
要跟踪的内容也可以通过 ktrace
命令行实用程序控制,如下所述。
轨迹缓冲区空间
轨迹缓冲区的大小在启动时是固定的,由 ktrace.bufsize
内核命令行参数控制。其值为缓冲区大小(以兆字节为单位)。默认值为 32MB。
ktrace 命令行实用程序
可以使用 ktrace
命令行实用程序控制内核跟踪。
$ 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 以供查看。或者,可以使用主机工具 trace2json
将轨迹导出到更易读的 json 输出。
示例:
首先在目标上收集跟踪记录:
$ ktrace start 0xfff
... do something ...
$ ktrace stop
$ ktrace save /tmp/save.ktrace
然后,将该文件复制到开发主机,并将其导出:
host$ out/default/host-tools/netcp :/tmp/save.ktrace save.fxt
host$ fx trace2json < save.fxt > save.json
输出内容可能非常庞大,因此建议将其发送到文件,然后在编辑器或其他工具中查看。
与 Fuchsia Tracing 搭配使用
Fuchsia 的跟踪系统支持通过 ktrace_provider
跟踪提供程序收集内核跟踪记录。如需有关 Fuchsia 跟踪系统的文档,请参阅 Fuchsia 跟踪系统中的文档。
更多信息
如需详细了解 ktrace
,请参阅内核命令行参数的完整列表。