本文档介绍了可用于在 Rust 中写入和读取 Inspect 数据的库。 如需了解每个库的具体文档,请参阅每个部分中链接的 crate 文档。
用于写入 Inspect 的库
fuchsia-inspect
这是核心库。此库提供了用于创建节点、属性、 提供 Inspect 等的核心 API。在内部,它实现了 Inspect vmo 格式中所述的伙伴分配算法。
如需了解 Inspect 概念和 Rust 库,请参阅 Codelab。
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 程序中管理 Inspect 数据的便捷方式。它比 fuchsia-inspect 更高级别。
如需详细了解此库,请参阅符合人体工程学的 Inspect。
用于读取 Inspect 的库
这些库并非特定于 Inspect,而是用于各种诊断数据。
diagnostics-hierarchy
此库包含便捷的宏 assert_data_tree,用于测试以及 DiagnosticsHierarchy 的定义,后者并非 Inspect 独有,也用于日志和其他诊断数据源。
diagnostics-testing
此库包含便捷的 EnvForDiagnostics,这对于测试 Inspect 与旧版组件的集成非常有用。
diagnostics-reader
此库包含便捷的 ArchiveReader,这对于在测试或生产环境中从 Archivist 提取 Inspect 数据非常有用。它封装了连接到 ArchiveAccessor 并从中提取数据的共享逻辑。
其他
inspect_format
此库提供了一个用于读取和写入 Inspect VMO 格式块的 API。