10 releases (5 breaking)
0.6.0 | Jul 11, 2023 |
---|---|
0.5.0 | Oct 19, 2022 |
0.4.0 | Jul 20, 2021 |
0.3.3 | May 14, 2021 |
0.1.2 | Mar 13, 2021 |
#547 in Debugging
Used in pdbview
81KB
2K
SLoC
ezpdb
A high-level library for the fantastic pdb
crate
Goal
The pdb
crate provides a low-level interface for interacting with PDB files. While the crate provides very good and useful information, it may not be the easiest solution for looking at the whole slice of a PDB. From the pdb
crate's README:
pdb
's design objectives are similar togimli
:
pdb
works with the original data as it's formatted on-disk as long as possible.
pdb
parses only what you ask.
pdb
can read PDBs anywhere. There's no dependency on Windows, on the DIA SDK, or on the target's native byte ordering.
The first two bullet points in particular can be particularly cumbersome if your application needs to iterate over every type, find one of a particular size or containing a particular field, and perform some operations on it. While you absolutely should care about speed and not performing unnecessary work, sometimes the reality is that you simply don't. This crate is for those scenarios where you just want to hack on some data and speed is not a concern.
The biggest differences are that ezpdb
takes care of building the type heirarchy and copies all necessary information for ease of use.
Usage
let parsed_pdb = ezpdb::parse_pdb(&opt.file, opt.base_address)?;
println!("{:?}", parsed_pdb.assembly_info);
Dependencies
~1.2–1.8MB
~37K SLoC