記錄啟動追蹤記錄

Zircon 核心的內部追蹤系統可在開機時啟用。也就是說 設定啟動選項,盡可能減少啟動核心端啟動完畢後 需要收集圖像資料就大功告成。

啟用核心追蹤開機參數

核心追蹤緩衝區的大小可在啟動時變更 與 ktrace.bufsize=N 指令列選項相符,其中 N 是大小 以 MB 為單位進行緩衝區大小

要收集的資料是由 `ktrace.grpmask=0xNNN' 控管 指令列選項0xNNN 值是 KTRACE_GRP_* 的位元遮罩 值 //zircon/kernel/lib/boot-options/include/lib/boot-options/options.inc. 預設值為 0x000,這會停用所有追蹤記錄類別 (或 ktrace parlance)。

透過 fx set 指令,將啟動選項設為 GN 變數:

fx set ... --args='dev_kernel_cmdline=["ktrace.grpmask=0xFFF"]'

接著,您需要重新建構並重新部署。

如要進一步瞭解 Zircon 指令列選項,請參閱: - kernel_cmdline - kernel_build

將核心啟動追蹤記錄資料納入追蹤記錄結果

啟用核心追蹤開機參數後,只要核心的內部追蹤緩衝區 復原後,追蹤記錄中就會有資料。藉由 將 kernel:retain 類別傳遞至 ffx tracetrace 程式。請注意,追蹤記錄 在未傳遞 kernel:retain 的情況下,ktrace 緩衝區會重新復原,資料也遺失。

範例:

ffx trace start --categories "kernel,kernel:retain" --buffer-size 32 --duration 1

這裡有幾點重要事項需要注意。

首先要注意的是,已經傳遞的類別:kernelkernel:retainkernel 類別會指示核心追蹤所有內容。 在本範例中,核心已經追蹤所有項目: 設為開機時的預設值只要在這裡指定 告知 ktrace_provider,這是 Fuchsia 追蹤記錄之間的介面 與核心持續收集該核心資料 kernel:retain 類別會指示 ktrace_provider 不要倒轉 開始追蹤時的核心追蹤緩衝區。

第二是緩衝區空間核心的預設追蹤記錄緩衝區大小 32 MB,Fchsia 追蹤記錄的預設緩衝區大小為 4 MB。 使用較大的 Fuchsia 追蹤記錄緩衝區空間,表示有足夠的空間 保留核心追蹤記錄緩衝區的內容。

第三個重點是 擷取追蹤記錄緩衝區目前的內容,而沒有興趣 持續追蹤任何項目因此,使用時間長度為一秒的原因。