#object-file #information #dwarf #elf #mach-o #file-format

symbolic-debuginfo

一个用于从二进制文件(如 Mach-O 或 ELF)中检查和加载 DWARF 调试信息的库

115 个稳定版本 (11 个主要版本)

12.10.0 2024年7月24日
12.8.0 2023年12月1日
12.7.1 2023年11月29日
12.3.0 2023年7月19日
1.1.5 2017年12月2日

#233调试

Download history 4051/week @ 2024-04-26 4450/week @ 2024-05-03 2763/week @ 2024-05-10 3323/week @ 2024-05-17 4150/week @ 2024-05-24 5193/week @ 2024-05-31 4422/week @ 2024-06-07 3829/week @ 2024-06-14 2653/week @ 2024-06-21 4013/week @ 2024-06-28 3633/week @ 2024-07-05 4499/week @ 2024-07-12 5086/week @ 2024-07-19 5672/week @ 2024-07-26 4711/week @ 2024-08-02 4652/week @ 2024-08-09

20,909 每月下载量
用于 25 个crate(13 个直接使用)

MIT 许可证

740KB
13K SLoC

处理对象文件和调试信息的抽象。

此模块定义了 Object 类型,它是不同平台上使用的各种对象文件格式的抽象。由于 MacOS 上的可执行文件可能包含多个对象文件(称为“Fat MachO”),因此还有一个 Archive 类型,它为所有平台提供了一个统一的接口,可以访问对象迭代器。

大多数对象文件的处理将在 Object 类型或其针对特定平台的具体实现上进行。为了允许对此进行抽象,有一个 ObjectLike 特征。它定义了常见属性,并提供了访问 DebugSession 的权限,这可以用于执行更多有状态的调试信息处理。

有关完整 API,请参阅 Object,或使用一个模块直接访问平台相关的数据。

背景

symbolic::debuginfo 的功能在概念上类似于 object crate。然而,有一些关键差异,这需要单独的实现。

  • object 更侧重于可执行格式,而 symbolic 则关注调试信息。这就是为什么 symbolic 还包括 PDB 和 Breakpad 对象的变体,而 object 则有 WASM 变体。
  • object 以牺牲性能为代价,提供了对对象内部数据的更多通用访问。symbolic 尝试在通用使用方面进行优化,以牺牲调试场景。
  • symbolic 包含了对多对象文件(Archive)的抽象,这在 object 中由于 object::Object 特性使用生命周期而难以实现。

依赖项

~0.8–9.5MB
~91K SLoC