记录内核跟踪记录

内核通过将记录写入内部缓冲区来跟踪各种操作, 以供日后检索、打印和查看

内核跟踪记录格式

内核轨迹格式使用 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 的详细信息,请参阅 内核命令行参数的完整列表