内核通过将记录写入内部缓冲区来跟踪各种操作, 以供日后检索、打印和查看
内核跟踪记录格式
内核轨迹格式使用 FXT
控制要跟踪的数据
由内核命令行参数提供对跟踪记录的控制
ktrace.grpmask
。该值指定为 0xNNN,是一个位掩码
要启用的跟踪组数量有关 *KTRACE_GRP_* 值,请参见
system/ulib/zircon-internal/include/lib/zircon-internal/ktrace.h
。
默认值为 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 跟踪系统的文档,请参阅
紫红跟踪系统。
更多信息
如需了解有关 ktrace
的详细信息,请参阅
内核命令行参数的完整列表。