2010-03-25 105 views
3

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

我使用的是微软的调试接口访问SDK

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

并传入GUID尝试加载PDB当我想到时得到E_PDB_INVALID_SIG。

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

有没有一种工具可以做到这一点?我试过dia2dump和DUMPBIN,但没有喜悦......

非常感谢,

thoughton。

回答

1

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

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

4

有一个Code Project tool called PDB Inspector应该能够帮助你。或者,如果你需要做这个编程基本上你拨打:

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

的​​到DIA和其关系与C++样本DBGHELP一起。这基本上就是我在保罗·阿诺德提到的那篇文章之后写的文章。