Как прочитать файл аварийного дампа (у меня есть исходный код и файлы.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 должна иметь ту же конфигурацию / платформу сборки, что и приложение, создавшее файл дампа.

Другие вопросы по тегам