2013-02-20 6 views
3

Я прочитал вопросы, которые уже есть в StackOverflow, но я все еще не могу заставить его работать.Как читать файл дампа сбоя (у меня есть исходный код и файлы .pdb)

У меня есть

  • мини-файл дампа от клиента
  • таже версия нашего кода, который клиент получил
  • в каталоге отладки, файлы .pdb для кода.

Я пытался ставить мини-файл дампа в каталоге отладки, а затем открыть его в Visual Studio 2010. я не знаю, если это было правильно, что нужно сделать, или что делать дальше.

«Начать отладки» выделено серым цветом в обычном меню отладки.

Существует окно с «Действия» в правом верхнем углу вкладки Сводка файла Minidump. Поэтому я нажал на «Debug with Native Only», но все, что я получаю, это «Исходный код недоступен для текущего местоположения».

Должно быть, мне не хватает чего-то очень простого - пожалуйста, кто-нибудь может дать мне подсказку?

+1

У вас есть .pdb-файлы, которые были созданы при создании программы? Просто перестроить один и тот же источник не работает, вам нужно хранить файлы .pdb для каждой сборки. –

+0

Также необходимо включить Microsoft Symbol Server в параметрах Debugger. –

+0

@AlexFarber благодарим вас за ответ. Вы имеете в виду загрузку символов для библиотек Microsoft с сервера Symbol Server? Я сделал это. –

ответ

2

Просто тянуть различные биты информации вместе в ответ:

У вас есть PDB-файлы, которые были созданы, когда была построена программа? Просто восстановить тот же источник не работает, вам нужно хранить файлы .pdb для каждой сборки. - Alex Farber Feb 20 '13 at 11:05

«Отладчик сопоставляет информацию, такую ​​как имя файла, временную метку и контрольную сумму при сопоставлении PDB с двоичным (DLL или exe)». (Saikat Sen, Codeproject article)

Следуя подсказке AlexFarber, я скопировал исходный код и выпустил папку из сборки клиента на мой компьютер (вся сборка была сохранена, включая файлы .pdb и .exe в папке Release).

Затем я скопировал файл дампа в папку выпуска и загружены символы Microsoft в ту же папку.

Затем я открыл файл дампа снова в Visual Studio 2010.

я не видел ничего более полезным, чем раньше, что я предполагаю, что это из-за этого - see the accepted answer on this SO question. Я использую C# и сборку .NET 2.0, и кажется, что я могу просматривать только исходный код для сборки .NET 4.0.

я попробовать WinDbg надстройку под названием SOS.dll Гансом Passant рекомендуется по тому же вопросу в следующем.

Как обойти необходимость использовать PDB файлы из тех же сборок:

Я думаю, вы можете обойти это требование для тех же самых PDB-файлов, если вы используете WinDbg. От virtualdub «Если отладчик упрям ​​и не хочет загружать символы, потому что он считает, что они не совпадают, вы можете использовать .symopt + 0x40, чтобы установить флаг« загрузить что-либо ».

Кроме того, если я правильно понимаю, вы можете использовать инструмент chkmatch, на который ссылается sergmat, чтобы соответствовать файлам .exe и .pdb.

2

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

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

+0

Relasee и Debug никогда не работали для меня .... Я говорю из многолетнего опыта –