如何从PDB文件中获取GUID?

时间:2010-03-25 17:13:56

标签: debugging guid pdb-files dia-sdk

有谁知道如何从PDB文件中获取GUID?

我正在使用Microsoft的调试接口访问SDK

http://msdn.microsoft.com/en-us/library/f0756hat.aspx

并且在传入我尝试加载PDB时期望的GUID时获取E_PDB_INVALID_SIG。

我只想知道PDB的GUID,所以我可以肯定它不匹配,而不仅仅是一个可能以某种方式损坏的PDB。

有没有可以做到这一点的工具?我已经尝试过dia2dump和dumpbin,但没有快乐......

非常感谢,

thoughton。

3 个答案:

答案 0 :(得分:5)

Code Project tool called PDB Inspector应该可以帮到你。或者,如果您需要以编程方式执行此操作,请致电:

IDiaDataSource::LoadDataFromPdb
IDiaDataSource::openSession
IDiaSession::get_global_scope
IDiaSymbol::get_guid

答案 1 :(得分:2)

我会使用dbghelp符号API。如果你想要的只是关于PDB的信息,你可以使用chkmatch,或者说,只需将dll / exe加载到WinDbg并使用!sym noisy,!lmi或!chksym。

修复PDB以匹配是一个不同的故事! chkmatch可以做一些工作,但不能使年龄差异匹配,它只能做时间戳和GUID签名。

答案 2 :(得分:2)

对DIA introduction及其与DbgHelp的关系以及C ++示例。这基本上是我在Paul Arnold提到的那篇文章之后写的文章。

相关问题