10个版本 (5个破坏性更新)

0.6.0 2023年7月11日
0.5.0 2022年10月19日
0.4.0 2021年7月20日
0.3.3 2021年5月14日
0.1.2 2021年3月13日

#651 in 调试

37次每月下载
pdbview中使用

MIT许可证

81KB
2K SLoC

API Documentation] crates.io

ezpdb

为出色的pdb代码包提供高级库

目标

pdb代码包提供与PDB文件交互的底层接口。虽然该代码包提供了非常好且有用的信息,但查看整个PDB切片可能并非最简单的解决方案。来自pdb代码包的README

pdb的设计目标类似于gimli

  • pdb尽可能以磁盘上格式化的原始数据形式工作。

  • pdb只解析你要求的内容。

  • pdb可以在任何地方读取PDB文件。不依赖于Windows、DIA SDK或目标机的本地字节序。

尤其是前两点,如果您的应用程序需要迭代每个类型,找到特定大小或包含特定字段的类型,并对它执行某些操作,可能会特别麻烦。虽然您绝对应该关注速度和避免不必要的操作,但有时现实是您根本不关心速度。这个代码包是为那些您只想对一些数据进行快速操作而速度不是主要关注点的场景而设计的。

最大的区别是ezpdb会处理类型层次结构的构建并复制所有必要信息,以便于使用。

用法

let parsed_pdb = ezpdb::parse_pdb(&opt.file, opt.base_address)?;
println!("{:?}", parsed_pdb.assembly_info);

依赖关系

~1.2–1.8MB
~37K SLoC