| Crates.io | microsoft-dia |
| lib.rs | microsoft-dia |
| version | 0.15.0 |
| created_at | 2021-11-18 16:59:42.27374+00 |
| updated_at | 2025-09-09 19:05:55.902363+00 |
| description | Rust for Debug Interface Access (DIA) SDK |
| homepage | |
| repository | https://github.com/microsoft/dia-rs |
| max_upload_size | |
| id | 484044 |
| size | 8,051,638 |
The Microsoft Debug Interface Access Software Development Kit (DIA SDK) provides access to debug information stored in program database (.pdb) files generated by Microsoft postcompiler tools.
Start by adding windows-core and microsoft-dia dependencies to Cargo.toml:
[dependencies.windows-core]
version = "0.62"
[dependencies.microsoft-dia]
version = "0.15"
Make use of any DIA SDK APIs as needed.
use microsoft_dia::{nsfRegularExpression, DiaSource, IDiaDataSource, SymTagFunction};
use windows_core::*;
fn main() -> Result<()> {
unsafe {
let source: IDiaDataSource = microsoft_dia::helpers::NoRegCoCreate(s!("msdia140.dll"), &DiaSource)?;
let executable = std::env::current_exe().unwrap();
source.loadDataForExe(&HSTRING::from(executable.as_os_str()), None, None)?;
let session = source.openSession()?;
let symbols = session.globalScope()?.findChildren(SymTagFunction, w!("*"), nsfRegularExpression.0 as u32)?;
println!("Function symbols found in self: ({}):", &executable.to_string_lossy());
for i in 0..symbols.Count()? {
println!("\t{}", symbols.Item(i as u32)?.name()?);
}
Ok(())
}
}