Как понимать .pdb файлы Visual Studio? - PullRequest
2 голосов
/ 08 сентября 2010

Я открыл его с помощью редактора, совершенно грязного.

Кстати, в представлении «Разборка», возможно ли сбросить весь код сборки?Я пытался, но могу только захватить экран строк

Ответы [ 4 ]

6 голосов
/ 09 сентября 2010

Я отслеживаю ваши вопросы.Есть контекст, который вы должны были вставить в свой вопрос, я думаю, что вы пытаетесь отладить плагин DirectShow, для которого у вас нет исходного кода.Какая-то штуковина с камерой.

Нет, открытие файла .pdb в текстовом редакторе не покажет вам ничего полезного.Это двоичные данные.Я знаю, что у вас есть соответствующий .pdb для плагина, с которым вы работаете, вы получаете достойные трассировки стека с именованными функциями.Вы, вероятно, получили .pdb с сервера Microsoft Symbol.Чтение файла .pdb - это работа отладчика.Есть несколько API-интерфейсов, которые можно прочитать сами, API-интерфейс dbghelp - основной.

Но он не покажет вам все, что вы еще не знаете из отладчика.Файл .pdb - это просто база данных функций.Вы получили раздетый, он никогда не покажет больше, чем то, что вы видите в окне стека вызовов.

В конечном счете, это цепочка вопросов XY.Вы продолжаете спрашивать о Y, даже не раскрывая, в чем суть настоящей проблемы X.Вы будете просто получать бесполезные ответы, как этот, пока не расскажете нам о X.

4 голосов
/ 08 сентября 2010

CodeProject: Как проверить содержимое файла базы данных программы (PDB)

Имейте в виду, что эти файлы предназначены для отладчика, а не для вас. По крайней мере, у меня нет срочного желания читать все возможные форматы файлов в текстовом или шестнадцатеричном редакторе.

2 голосов
/ 27 октября 2014

Имея в виду замечания Ханса Пассанта - я думаю, что вопрос как есть, заслуживает ответа, если не сказать ничего другого, ради тех, кто прибыл сюда в результате поиска.

Поставляемый инструмент для проверки PDB: DBH . Это связано с инструментами отладки для окон. По общему признанию инструмент командной строки (я лично из поколения GUI), он чрезвычайно богат функциями, и вам будет трудно найти что-то, что он не может сделать в половину строки.

0 голосов
/ 27 ноября 2010

Звучит так, как будто вам нужна команда dumpbin.Обратите внимание, что для этого необходимо, чтобы инструменты VC были в вашей переменной PATH;Вы можете использовать соответствующий ярлык в меню «Пуск» или запустить %VSxxCOMNTOOLS%\vsvars32.bat, где xx - мнемоника для фактической версии VC, которую вы используете: самый простой способ выяснить, какую именно переменную среды использовать, вероятно, нужно запуститьset и посмотрите, какие переменные с такими именами фактически установлены в вашей среде.Например, в системе с установленными MSVC 2005 Express и MSVC 2008 Express я получаю следующее:

C:\code\xemacs-beta\nt>set | grep "VS.*COMNTOOLS"
VS80COMNTOOLS=C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\
VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\

Итак, чтобы создать новое окно оболочки с инструментами VC 9 (2008), добавленными к пути,Я могу запустить start "VC 9" "%VS90COMNTOOLS%\vsvars32.bat".(Аргумент "VC 9" является заголовком для нового окна.)

В любом случае, с помощью инструментов VC в PATH мы можем запускать такие команды как dumpbin /disasm ..\src\temacs.exe > temacs.disasm (за исключением того, что вы, вероятно, не в nt подкаталог дерева xemacs, поэтому придерживайтесь любого желаемого пути).Это приведет к дизассемблированию данного файла с использованием любой подходящей PDB, которую он может найти для имен символов.

Документацию о вызовах MS можно найти в записи MSDN dumpbin (на самом деле, это намного лучшечем я запомнил это - возможно, мне было больно за то, что я был настолько неинформативен в отношении флага /disasm, в частности), но не стоит недооценивать полезность dumpbin /? - он может дать не так много информации, нопо крайней мере, вы можете видеть все это на экране одновременно.

...