核心會將記錄寫入內部緩衝區,以便之後擷取、列印及查看記錄,藉此追蹤各種動作。
核心追蹤記錄格式
核心追蹤格式使用 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
,請參閱核心指令列參數的完整清單。