3

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

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

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

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

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

有没有可以做到这一点的工具?我试过 dia2dump 和 dumpbin,但没有任何乐趣......

非常感谢,

想过。

4

3 回答 3

6

有一个名为 PDB Inspector 的代码项目工具应该能够帮助您。或者,如果您需要以编程方式执行此操作,您可以调用:

IDiaDataSource::LoadDataFromPdb
IDiaDataSource::openSession
IDiaSession::get_global_scope
IDiaSymbol::get_guid
于 2010-03-26T11:14:53.480 回答
2

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

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

于 2010-03-25T18:44:01.920 回答
2

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

于 2010-09-27T19:48:37.590 回答