記錄核心追蹤記錄

核心會將記錄寫入內部緩衝區,以便之後擷取、列印及查看記錄,藉此追蹤各種動作。

核心追蹤記錄格式

核心追蹤格式使用 FXT

控管追蹤記錄內容

要追蹤的內容是由核心指令列參數 ktrace.grpmask 提供。這個值指定為 0xNNN,是要啟用的追蹤群組位元遮罩。請參閱 system/ulib/zircon-internal/include/lib/zircon-internal/ktrace.h 中的 *KTRACE_GRP_* 值。預設值為 0xfff,用於追蹤所有內容。

您也可以使用 ktrace 指令列公用程式控管追蹤記錄,相關說明如下。

追蹤記錄緩衝區空間

追蹤緩衝區的大小在啟動時會固定,並且由 ktrace.bufsize 核心指令列參數控制。這個值是以 MB 為單位的緩衝區空間。預設值為 32 MB。

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 追蹤使用

Fuchsia 的追蹤系統支援透過 ktrace_provider 追蹤供應程式收集核心追蹤記錄。如需 Fuchsia 追蹤系統的說明文件,請參閱「Fuchsia 追蹤系統」中的說明文件。

更多資訊

如要進一步瞭解 ktrace,請參閱核心指令列參數的完整清單