Crates.io | ezpdb |
lib.rs | ezpdb |
version | 0.6.0 |
source | src |
created_at | 2021-03-12 02:03:30.714873 |
updated_at | 2023-07-11 16:51:33.836356 |
description | High-level library for https://crates.io/crates/pdb |
homepage | |
repository | https://github.com/landaire/pdbview |
max_upload_size | |
id | 367516 |
size | 80,855 |
A high-level library for the fantastic pdb
crate
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.
let parsed_pdb = ezpdb::parse_pdb(&opt.file, opt.base_address)?;
println!("{:?}", parsed_pdb.assembly_info);