Как я могу использовать файлы PDB - PullRequest
45 голосов
/ 16 сентября 2008

Я слышал, что использование файлов PDB может помочь определить, где произошел сбой.
Мое базовое понимание состоит в том, что вы предоставляете Visual studio исходный файл, файл pdb и информацию о сбое (от доктора Ватсона?)
Может кто-нибудь объяснить, пожалуйста, как все это работает / что связано? (Спасибо!)

Ответы [ 3 ]

38 голосов
/ 16 сентября 2008

Файлы PDB отображают MSIL сборки на исходные исходные строки. Это означает, что если вы поместите PDB, скомпилированный со сборкой, в тот же каталог, что и сборка, ваши трассировки стека исключений будут иметь имена и строки позиций в исходных исходных файлах. Без файла PDB вы увидите только имя класса и метода для каждого уровня трассировки стека.

34 голосов
/ 16 сентября 2008

PDB файлы генерируются при сборке вашего проекта. Они содержат информацию о встроенных двоичных файлах, которые Visual Studio может интерпретировать.

Когда программа дает сбой и генерирует отчет о сбое, Visual Studio может взять этот отчет и связать его с исходным кодом через файл PDB для приложения. Файлы PDB должны быть собраны из того же двоичного файла, который сгенерировал отчет о сбое!

Есть некоторые проблемы, с которыми мы столкнулись с течением времени.

  • На компьютере, на котором выполняется отладка отчета о сбое, источник должен находиться в том же пути, что и компьютер, на котором был создан двоичный файл.
  • Выпуски сборки часто оптимизируются до такой степени, что вы не можете просматривать состояние переменных-членов объекта

Если кто-нибудь знает, как победить первого, я был бы благодарен за некоторый вклад.

12 голосов
/ 25 сентября 2008

Вы должны обратить внимание на настройку сервера символов и индексацию файлов PDB в вашей системе управления исходным кодом. Я только недавно прошел этот процесс для нашего продукта, и он работает очень хорошо. Вам не нужно беспокоиться о том, чтобы сделать файлы PDB доступными в двоичных файлах, или о том, как получить соответствующий исходный код при отладке файлов дампа.

Книга Джона Роббинса: http://www.amazon.com/Debugging-Microsoft-NET-2-0-Applications/dp/0735622027/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1222366012&sr=8-1

Посмотрите здесь пример кода для создания мини-дампов (которые не должны быть ограничены анализом после сбоя - вы можете генерировать их в любой точке кода без сбоев): http://www.codeproject.com/KB/debug/postmortemdebug_standalone1.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...