2010-03-25 102 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一起。這基本上就是我在保羅·阿諾德提到的那篇文章之後寫的文章。