Как я могу получить GUID из файла PDB? - PullRequest
3 голосов
/ 25 марта 2010

Кто-нибудь знает, как получить GUID из файла PDB?

Я использую Microsoft Debug Interface Access SDK

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

и получение E_PDB_INVALID_SIG при передаче GUID, который я ожидаю при попытке загрузить PDB.

Я просто хотел бы узнать GUID PDB, чтобы быть уверенным, что он не соответствует, а не просто PDB, который, возможно, каким-то образом поврежден.

Есть ли инструмент, который может это сделать? Я пробовал dia2dump и dumpbin, но без радости ...

Большое спасибо,

thoughton.

Ответы [ 3 ]

5 голосов
/ 26 марта 2010

Существует инструмент Code Project, который называется PDB Inspector , который может вам помочь. Или, если вам нужно сделать это по существу программно, вы звоните:

IDiaDataSource::LoadDataFromPdb
IDiaDataSource::openSession
IDiaSession::get_global_scope
IDiaSymbol::get_guid
2 голосов
/ 27 сентября 2010

и введение в DIA и его отношение к DbgHelp вместе с образцом C ++. Это в основном статья, которую я написал после упомянутой Полом Арнольдом.

2 голосов
/ 25 марта 2010

Я бы использовал символьные API dbghelp. Если вам нужна только информация о PDB, вы можете использовать chkmatch или heck, просто загрузить dll / exe в WinDbg и использовать! Sym noisy,! Lmi или! Chksym.

Исправление PDB - это отдельная история! chkmatch может выполнять часть работы, но не может сопоставить разницу в возрасте, он может выполнять только метки времени и подписи GUID.

...