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