Fuchsia 追蹤系統

Fuchsia 追蹤的目的在於提供收集、匯總、 並以視覺化方式呈現 Fuchsia 使用者空間的診斷追蹤資訊 程序和 Zircon 核心。

如要進一步瞭解如何在 Fuchsia 中使用追蹤功能,請參閱下列指南:

根據預設,系統會關閉 Fuchsia 的追蹤功能。當事件發生 (例如 系統問題或啟動偵錯工作階段時, 。不僅可以開啟或關閉追蹤功能, 但你可以個別選取特定追蹤記錄類別。

Fuchsia 追蹤系統的一部分

在 Fuchsia 追蹤系統中,下列程式碼 元件 以分散的方式運作:

追蹤記錄供應商

當您編寫建立追蹤資料的元件時,該元件會變成 追蹤服務供應商一個系統可以有多個追蹤記錄提供者。

Fuchsia 採用分散式實作來追蹤系統, 追蹤程式會將追蹤資料直接寫入 Zircon 虛擬記憶體 物件 (VMO),即共用記憶體區段。系統會儲存追蹤資料 而不會複製到任何其他位置。如要 進一步瞭解 VMO 虛擬記憶體物件

在程式碼中指定追蹤記錄陳述式時,類別可提供 控制要記錄哪些追蹤資料。接著,在執行 追蹤用戶端並指定特定類別,追蹤用戶端只會記錄 指定擷取自追蹤記錄提供者的指定類別。

可追蹤或向系統提供追蹤資訊的元件 實作 TraceProvider FIDL 通訊協定,並註冊追蹤記錄提供者 Registry。註冊後,追蹤服務供應商就會在每次 追蹤記錄已開始或停止,但有機會 以 Fuchsia 追蹤記錄格式編碼的追蹤記錄資料。 請見 fuchsia.tracing.provider

追蹤記錄供應商 (要追蹤的元件) 只會寫入追蹤記錄緩衝區。 如果追蹤服務供應商的追蹤緩衝區在執行追蹤記錄期間已滿, 緩衝模式會決定追蹤記錄提供者的行為。如要 如要瞭解緩衝模式的相關資訊,請參閱 追蹤供應商緩衝模式

Trace 用戶端

追蹤用戶端是一個處理追蹤提供者資料的元件 。一個系統可以有多個追蹤服務供應商和追蹤用戶端。追蹤記錄 用戶端聯絡追蹤記錄管理員,要求追蹤記錄應從 或是停下腳步追蹤用戶端也可以要求儲存收集到的追蹤記錄資料。 追蹤管理員會收集資料,並透過通訊端將資料傳送至追蹤用戶端。

追蹤用戶端無法直接影響追蹤提供者的作業, 在 Fuchsia 追蹤系統中,追蹤記錄提供者會將資料寫入 VMO,然後 Trace 管理員會從 VMO 中讀取資料,最後在追蹤用戶端讀取資料 從通訊端追蹤資料

Fuchsia 使用由下列公用程式組成的單一追蹤用戶端:

  • trace:此公用程式會在 Fuchsia 目標上執行。 trace 會控制追蹤記錄,並將指令傳送至追蹤記錄 啟動及停止追蹤,並收集追蹤記錄資料。此外, 支援將 Fuchsia 追蹤記錄封存轉換為其他格式,例如 Catapult JSON 記錄。
  • ffx trace:此公用程式會在開發主機上執行。 ffx trace 會與 trace 公用程式通訊。您可以將追蹤記錄資料 從 trace 串流到開發主機,做為輸出檔案。

您可以直接透過 Controller FIDL 通訊協定收集追蹤記錄資訊。 請參閱「fuchsia.tracing.controller」。

Trace 管理員

追蹤管理員是一項系統服務, 追蹤服務供應商,並找出每個追蹤服務供應商的資料。另有 Fuchsia 中只有一個追蹤記錄管理工具。可確保追蹤記錄持續 並隔離提供追蹤服務供應商的元件 擷取自追蹤記錄用戶端追蹤記錄管理員會為每個註冊的 VM 指派 VMO 追蹤服務供應商

Trace 管理員會實作下列 FIDL 通訊協定:

  • Controller:提供追蹤用戶端,能夠列舉 追蹤記錄供應商及收集追蹤記錄資料。詳情請見 fuchsia.tracing.controller.
  • Registry:讓追蹤提供者能夠註冊 讓追蹤系統能夠找到這些物件 請參閱註冊管理機構一文。

第一種是第一種 (FIFO) 方法會通知系統啟動的追蹤記錄管理員 以及關閉追蹤提供者FIFO 控制代碼是從追蹤記錄傳遞 在初始開始追蹤過程中,與每個追蹤服務供應商互動 請求。如需更多有關 Fuchsia FIFO 封包的更多資訊 追蹤系統用途,請參閱 FIFO 封包

跨程序通訊

以下是跨程序的幾個重要特性 Fuchsia 追蹤通訊:

  • 追蹤記錄供應商和追蹤記錄管理員沒有同步處理點 而不只是開始或停止收集
  • 追蹤服務供應商 (追蹤的元件) 只會寫入追蹤記錄緩衝區 從它們讀取資料
  • 追蹤記錄管理員只會從追蹤記錄緩衝區讀取資料,不會寫入追蹤記錄。
  • 追蹤用戶端會在追蹤記錄管理員的通訊端接收追蹤記錄封存檔 且一律不得讀取原始追蹤記錄緩衝區這麼做可保護追蹤服務供應商 透過追蹤用戶端進行操縱

當您啟動追蹤時,追蹤記錄管理員會詢問所有相關 追蹤提供者以開始追蹤,並為每個提供者提供追蹤緩衝區 應將追蹤記錄寫入 VMO。在追蹤記錄執行期間, Trace Manager 會監控新註冊的追蹤服務供應商,然後啟用這些供應商 將物件的使用中版本還原為舊版 或依需要永久刪除封存版本

追蹤記錄完成後,追蹤記錄管理員就會提出所有有效的追蹤程式 停止追蹤然後追蹤記錄管理員會等待每個追蹤服務供應商 確認他們已完成寫入追蹤事件追蹤記錄 接著,管理員會讀取及驗證寫入追蹤記錄緩衝區的追蹤記錄資料 VMO 並建立追蹤記錄封存檔。

即使追蹤服務供應商,追蹤記錄管理員通常仍可復原部分資料 但前提是必須將一些資料儲存至 追蹤記錄緩衝區如果追蹤程式的追蹤緩衝區變成 而在追蹤執行期間,緩衝模式會決定 追蹤服務供應商若需更多資訊,請參閲 追蹤提供者緩衝模式

Trace 管理員會透過以下方式,將產生的追蹤記錄封存檔傳送給用戶端: 通訊端。這些資料是依據 Fuchsia 追蹤格式, 但如果追蹤記錄供應商故意散發垃圾資料,就可能包含無意義的資料。

圖 1 顯示 Fuchsia 追蹤系統的元件和 這些元件會彼此通訊

這張圖顯示 Fuchsia 追蹤系統。

圖 1. Fuchsia 追蹤系統