Устранение неполадок мини-дамп в VS 2010 - PullRequest
4 голосов
/ 17 августа 2011

Я вызываю MiniDumpWriteDump из .NET для создания минидампа, и это прекрасно работает.Однако, когда я загружаю полученный дамп в VS 2010, я не вижу никакой полезной информации.В частности, окно Call Stack выглядит примерно так:

Call stack

Оно не содержит управляемых фреймов, хотя я пишу дамп, покав обработчике исключений в управляемом коде.Кроме того, он не содержит никаких фреймов, расположенных в моем exe-файле.

Есть идеи, почему это происходит?

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

Редактировать:

Обнаружена ошибка Microsoft Connect по этому поводу.В нем говорится:

В настоящее время CLR не поддерживает управляемые процессы, берущие свои собственные дампы.

Кто-нибудь знает, правда ли это?

Ответы [ 3 ]

2 голосов
/ 09 сентября 2011

Я нашел свою ошибку.Я смотрел на стек вызовов не того потока (я не знал, что было запущено более одного потока).Теперь я прекрасно вижу стек управляемых вызовов.

0 голосов
/ 09 сентября 2011

Имейте в виду, что вы должны вызывать MiniDumpWriteDump из фильтра исключений, который поддерживается VB.NET, но не поддерживается C #.

Просмотрите следующие ссылки:

Получениехорошие дампы, когда выбрасывается исключение

Запись мини-дампов из исключений в C #

0 голосов
/ 09 сентября 2011

Я делаю что-то подобное в своем приложении (то есть вызываю MiniDumpWriteDump и затем исследую дампы в отладчике).

Всякий раз, когда у меня возникает эта проблема, есть две возможные причины:

  • отсутствует или символьная информация
  • или отсутствует библиотека DLL или EXE, которая использовалась процессом во время создания дампа

Первую причину легко устранить.В VS2010 вы можете просто щелкнуть правой кнопкой мыши DLL в стеке вызовов или в окне модулей и выбрать «Загрузить символы с серверов Microsoft».

Вторая причина более сложна для решения.Если DLL или EXE отсутствуют, отладчик отказывается разрешить вам отладку и даже отказывается смотреть на символы.Хитрость заключается в создании фиктивной DLL / EXE из файла DMP.Посмотрите на http://www.debuginfo.com/tools/modulerescue.html для утилиты MODULERESCUE.Эта утилита может генерировать фиктивные DLL и EXE-файлы для данного файла DMP, этого достаточно, чтобы удовлетворить отладчик и снова загрузить символы.

...