Crates.io | microsoft-dia |
lib.rs | microsoft-dia |
version | |
source | src |
created_at | 2021-11-18 16:59:42.27374 |
updated_at | 2025-01-16 17:14:39.088412 |
description | Rust for Debug Interface Access (DIA) SDK |
homepage | |
repository | https://github.com/microsoft/dia-rs |
max_upload_size | |
id | 484044 |
Cargo.toml error: | TOML parse error at line 24, column 1 | 24 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
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.59"
[dependencies.microsoft-dia]
version = "0.13"
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(())
}
}