Как прочитать файл аварийного дампа (у меня есть исходный код и файлы.pdb)
Я прочитал вопросы, которые уже есть в Stackru, но я до сих пор не могу заставить его работать.
я имею
- мини-файл дампа от клиента
- точно такая же версия нашего кода, которую получил клиент
- в каталоге отладки файлы.pdb для кода.
Я попытался поместить файл мини-дампа в каталог отладки, а затем открыть его в Visual Studio 2010. Я не знаю, правильно ли это было делать или что делать дальше.
"Начать отладку" не отображается в обычном меню отладки.
В правом верхнем углу вкладки "Сводка файла мини-дамп" есть поле с надписью "Действия". Поэтому я нажал "Отладка только с помощью Native", но все, что я получил, это "Нет доступного исходного кода для текущего местоположения".
Я, должно быть, упускаю что-то действительно простое - пожалуйста, кто-то может дать мне подсказку?
2 ответа
Просто чтобы объединить различные фрагменты информации в ответ:
У вас есть файлы.pdb, которые были созданы при сборке программы? Простая перестройка одного и того же источника не работает, вам нужно сохранять файлы.pdb для каждой сборки. - Alex F 20 февраля '13 в 11:05
"Отладчик сопоставляет информацию, такую как имя файла, отметку времени и контрольную сумму, при сопоставлении PDB с двоичным файлом (DLL или exe)". (Сайкат Сен, статья "Кодпроект")
Следуя подсказке Alex Farber, я скопировал исходный код и папку выпуска из сборки клиента на мой компьютер (вся сборка была сохранена, включая файлы.pdb и.exe в папке выпуска).
Затем я скопировал файл дампа в папку выпуска и загрузил символы Microsoft в ту же папку.
Затем я снова открыл файл дампа в Visual Studio 2010.
Я не видел ничего более полезного, чем раньше, что, как я полагаю, связано с этим - см. Принятый ответ на этот вопрос SO. Я использую C# и сборку.NET 2.0, и кажется, что я могу просматривать только исходный код для сборки.NET 4.0.
Я попробую надстройку WinDbg под названием sos.dll, рекомендованную Хансом Пассантом, по тому же вопросу.
Как обойти необходимость использовать файлы pdb из той же сборки:
Я думаю, что вы можете обойти это требование для тех же файлов.pdb, если вы используете WinDbg. Из virtualdub "Если отладчик упрям и не хочет загружать символы, потому что считает, что они не совпадают, вы можете использовать.symopt+ 0x40, чтобы установить флаг" загрузить что-нибудь "."
Кроме того, если я правильно понимаю, вы можете использовать инструмент chkmatch, на который ссылается sergmat выше, для сопоставления файлов.exe и.pdb.
Насколько я понимаю, у вас есть мини-дамп для клиента, который, я полагаю, использует сборку Release вашего приложения и файл Debug PDB.
Это ваша проблема, ваш PDB и мини-дамп не совпадают. Чтобы просмотреть четкие трассировки стека, PDB должна иметь ту же конфигурацию / платформу сборки, что и приложение, создавшее файл дампа.