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