Rust 程式庫

本文說明可用於在 Rust 中寫入及讀取 Inspect 資料的程式庫。如需各程式庫的專屬說明文件,請參閱各節連結的 Crate 說明文件。

用於編寫 Inspect 的程式庫

fuchsia-inspect

這是核心程式庫。這個程式庫提供核心 API,可用於建立節點、屬性、提供 Inspect 等。在內部,它會實作 Inspect vmo 格式中描述的夥伴分配演算法。

如需 Inspect 概念和 Rust 程式庫的簡介,請參閱程式碼實驗室。

如需設定虛擬記憶體物件 (VMO) 緩衝區容量和監控記憶體配置健康狀態的指引,請參閱「管理 VMO 大小和容量」。

inspect-runtime

這個程式庫可讓元件提供 Inspect,並供 Archivist 收集。

僅供元件二進位檔使用,不適用於程式庫。這是因為這個程式庫提供 expect_includes 檢查,可驗證元件資訊清單是否已設定為公開 Inspect。

避免依賴程式庫中的 inspect-runtime,以免測試被迫新增 Inspect client.shard.cml。

fuchsia-inspect-contrib

這個程式庫提供 Inspect 用戶端貢獻的高階模式和公用程式,可簡化常見的記錄和資料結構:

  • 有界事件記錄:BoundedListNode 會管理子節點的固定容量 FIFO 清單,並在清單已滿時自動移除較舊的項目。

  • 加上時間戳記的事件記錄:inspect_log! 巨集會將結構化事件記錄到 BoundedListNode,並自動插入 @time 啟動時間戳記。

  • 時間屬性:NodeTimeExt 提供便利的方法,可在 Inspect 節點上記錄及管理啟動和單調時間戳記。

  • 診斷快取:LruCacheNode 和 DedupeLogNode 可協助快取及簡化診斷資料。

fuchsia-inspect-derive

這個程式庫可讓您透過 #[derive(Inspect)] 程序巨集,在 Rust 程式中輕鬆管理檢查資料。這項設定的層級高於 fuchsia-inspect。如要進一步瞭解這個程式庫,請參閱「Ergonomic Inspect」。

讀取 Inspect 的程式庫

這些程式庫並非 Inspect 專用,而是用於各種診斷資料。

diagnostics-hierarchy

這個程式庫包含用於測試的便利巨集 assert_data_tree,以及 DiagnosticsHierarchy 的定義,這並非 Inspect 專用,也用於記錄和其他診斷資料來源。

diagnostics-testing

這個程式庫包含便利的 EnvForDiagnostics,可用於測試 Inspect 與舊版元件的整合。

diagnostics-reader

這個程式庫包含便利的 ArchiveReader,可用於在測試或正式環境中,從封存工具擷取 Inspect 資料。它會包裝連線至 ArchiveAccessor 並從中擷取資料的共用邏輯。

其他

inspect_format

這個程式庫提供 API,用於讀取和寫入檢查 VMO 格式的區塊。