Как понять.pdb файлы Visual Studio?

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

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

4 ответа

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

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

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

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

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

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

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

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

Похоже, что вы хотите, это 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", (The "VC 9" Аргумент - это название нового окна.)

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

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

Другие вопросы по тегам