Отладка минидампа

Я скомпилировал отладочную версию своего приложения в одной папке. Теперь есть все dll, pdb и exe с pdb. Теперь я создал MiniDump моего запущенного приложения, начатого с этого пути с помощью Taskmanager. Теперь я могу открыть этот dmp-файл в Visual Studio 2010. Но при попытке отладки будет сообщение о том, что символы не найдены. Я добавил путь к своим символам (pdb) в пути символов в визуальной студии, но безуспешно. Я также попытался загрузить символы через ContextMenu модулей. Он ищет там MyApp.pdb, и я выбрал правильный pdb. Но я получаю сообщение A matching symbol file was not found in this folder.

Что я могу сделать, чтобы выполнить посмертную отладку моего MiniDump с помощью Visual Studio 2010 (чтобы он нашел мои символы)?


person BennoDual    schedule 27.06.2011    source источник


Ответы (1)


  1. У ваших pdb и dll одинаковая метка времени? Они оба воссоздаются, когда вы перестраиваете?

  2. Попробуйте использовать chkmatch, чтобы убедиться, что ваша dll и pdb совпадают.

Используйте chkmatch следующим образом: chkmatch -c MyApp.exe MyApp.dll

Вывод должен выглядеть примерно так

Файл отладочной информации:
Формат: PDB 7.00
Подпись: {ef4bc52f-0161-4e0a-8654-cc1368d7a8a6} Возраст: 1

Результат: Совпало

Вам не нужно устанавливать путь к символу, если ваши pdb находятся в том же месте, что и исполняемый файл, который вы сбрасываете.

Вы используете .NET 4?

person wal    schedule 27.06.2011
comment
@wal - да, у них одинаковая отметка времени. chkmatch дает мне результат Файл отладочной информации: Формат: PDB 7.00 Подпись: {0c98df34-162a-4fed-ab4a-2f241f7d1ffc} Возраст: 1 Результат: Соответствует Да, я использую .NET 4. Приложение, которое я пытаюсь отладить, является x86-приложение. Это машина x64 с Visual Studio 2010 Premium и Windows 7. Может ли это быть проблемой? - person BennoDual; 27.06.2011
comment
@t.kehl действительно очень странно! есть последние пакеты обновлений VS? Не уверен, что предложить сейчас; Я только что попробовал то, что вы пытаетесь сделать с временным проектом, и у меня это работает нормально. Вы хотите отправить мне то, что у вас есть (файлы pdb, dll и dmp)? - person wal; 27.06.2011
comment
@t.kehl Если вы отлаживаете приложение x86, вам нужно использовать инструменты отладки для Windows, чтобы получить 32-битный файл дампа. Однако VS должен предупредить вас об этом, когда вы открываете файл DMP. - person wal; 27.06.2011
comment
@wal - Да, у меня есть последний ServicePack, и я использую .NET 4 (я написал это в первом комментарии ;-). Я могу отправить вам свой dmp и начальный exe с pdb. Достаточно ли этого, что вы можете проверить на своей стороне? Я могу загрузить это на свой DropBox. - person BennoDual; 27.06.2011
comment
@t.kehl вам нужно установить 32-битную версию инструментов отладки для Windows. т. е. msdn.microsoft.com/en-us/windows/hardware/gg463016, а затем создайте файл дампа с помощью windbg, перейдите по этой ссылке: wiki.zimbra.com/wiki/< /а> - person wal; 27.06.2011
comment
@wal - спасибо. Я попробую это позже и вернусь сюда позже. хорошо? - person BennoDual; 27.06.2011
comment
@wal - я попробовал и создал дамп с помощью WinDbg x86. Там я получу следующее сообщение: (e64.618): Исключение инструкции Break - код 80000003 (первый шанс) ... - person BennoDual; 27.06.2011
comment
... И когда я пытаюсь отладить дамп, я получаю следующее сообщение в Visual Studio: Windows активировала точку останова в temp.dmp. Это может быть связано с повреждением кучи, что указывает на ошибку в temp.dmp или любой из загруженных библиотек DLL. Это также может быть связано с тем, что пользователь нажимает клавишу F12, когда фокус находится на temp.dmp. но в окне вывода информации больше нет :-( - person BennoDual; 27.06.2011
comment
хорошо, вместо того, чтобы получить файл дампа, как указано в этой ссылке, перейдите в папку установки инструментов отладки (C:\Program Files (x86)\Debugging Tools for Windows (x86)) и введите adplus.exe -crash -pn yourapp.exe -o c:\temp - person wal; 28.06.2011
comment
затем перейдите и откройте файл DMP в каталоге c:\temp - person wal; 28.06.2011