зеркало из https://github.com/microsoft/dia-rs.git
067973229c | ||
---|---|---|
.github | ||
.metadata | ||
.windows | ||
crates | ||
src | ||
.gitattributes | ||
.gitignore | ||
Cargo.toml | ||
rustfmt.toml |
.github/README.md
Rust for Debug Interface Access (DIA) SDK
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
and microsoft-dia
dependencies to Cargo.toml:
[dependencies.windows]
version = "0.34"
features = [
"alloc",
"Win32_System_Com"
]
[dependencies.microsoft-dia]
git = "https://github.com/microsoft/dia-rs"
version = "0.3.0"
Make use of any DIA SDK APIs as needed.
fn main() -> windows::core::Result<()> {
unsafe {
CoInitializeEx(std::ptr::null_mut(), COINIT_MULTITHREADED)?;
let source: IDiaDataSource = microsoft_dia::helpers::NoRegCoCreate("msdia140.dll", &DiaSource)?;
let executable = std::env::current_exe().unwrap();
source.loadDataForExe(executable.as_os_str(), None, None)?;
let session = source.openSession()?;
let symbols = session.globalScope()?.findChildren(
SymTagFunction,
"sample::*",
nsfRegularExpression.0 as u32,
)?;
println!(
"Function symbols found in sample::* ({}):",
&executable.to_string_lossy()
);
for i in 0..symbols.Count()? {
println!("\t{}", symbols.Item(i as u32)?.name()?);
}
Ok(())
}
}