Подтвердить что ты не робот

Как использовать файлы PDB

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 2

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

Ответ 3

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

Книга Джона Роббинса: http://www.amazon.com/Debugging-Microsoft-NET-2-0-Applications/dp/0735622027/исх = pd_bbs_sr_1 т.е. = UTF8 &? s = книги & QID = 1222366012 & ср = 8-1

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