有谁知道如何从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。
答案 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提到的那篇文章之后写的文章。