Как открыть аварийный дамп C # (Minidump) - PullRequest
2 голосов
/ 09 августа 2011

Наше приложение C # вызывает MinidumpWriteDump при необработанном исключении.

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

Тип создаваемого дампа: MiniDumpWithPrivateReadWriteMemory

У меня настроен _NT_SYMBOL_PATH для использования публичного сервера символов MS, и при отладке этого аварийного дампа в WinDBG он автоматически загружает необходимые библиотеки DLL (так как этот дамп был получен на машине с другой версией .NET 2, а именно тот, который заканчивается на .3053)

При запуске! Потоки я получаю этот вывод:

Не удалось запросить ThreadStore

Я просмотрел ВСЕ ВОЗМОЖНЫЕ сайты, которые объясняют методы обработки разных версий CLR, отличных от той, что была взята на дамп-машине, ни один из них не работал для меня.

Что я могу сделать, чтобы отладить эти сбои?

Мы что-то делаем не так (берём неправильный тип дампа из .NET-процесса и т. Д.)

EDIT:

Вот результат ~ *:

0: 000> ~ *. 0 Id: 1338.258 Приостановлено: 0 Teb: 7ffdf000 Разморозить Приоритет: 0 1 Id: 1338.2a0 Приостановка: 0 Teb: 7ffde000 Размораживание Приоритет: 0 2 Id: 1338.1fd4 Приостановка: 0 Teb: 7ffdd000 незамерзающий Приоритет: 0 3 Id: 1338.17e8 Приостановка: 0 Teb: 7ffda000 незамерзающий Приоритет: 0 4 Id: 1338.1148 Приостановка: 0 Teb: 7ffd9000 незамерзающий Приоритет: 0 5 Идентификатор: 1338.b1c Приостановлено: 0 Теб: 7ffd7000 Не заморожено Приоритет: 0 6 Идентификатор: 1338.f94 Приостановка: 0 Теб: 7ffd4000 Размораживание Приоритет: 0 7 Id: 1338.11b4 Приостановка: 0 Teb: 7ff4f000 незамерзающий Приоритет: 0 8 Id: 1338.1814 Приостановка: 0 Teb: 7ff4e000 незамерзающий Приоритет: 0 9 Id: 1338.1cc4 Приостановка: 0 Teb: 7ffdb000 незамерзающий Приоритет: 0 10 Id: 1338.1e48 Приостановка: 0 Teb: 7ffd5000 незамерзающий Приоритет: 0 11 Идентификатор: 1338.1a5c Приостановка: 0 Teb: 7ff4c000 незамерзающий Приоритет: 0 12 Id: 1338.1874 Приостановка: 0 Teb: 7ff4b000 незамерзающий Приоритет: 0 13 Id: 1338.1498 Приостановка: 0 Teb: 7ff4a000 незамерзающий Приоритет: 0

Вот результат! Analysis -v:

анализ

Ответы [ 2 ]

2 голосов
/ 10 августа 2011

WinDbg, вероятно, загружает не ту версию библиотеки mscorwks.Попробуйте использовать .cordll -lp, чтобы явно указать WinDbg, какие модули отладки CLR он должен загрузить, см. Также этот пост в блоге: Проблемы отладки управляемого кода в WinDbg с SOS и PSSCOR2 (например, «Не удалось запросить ThreadStore»)

1 голос
/ 25 ноября 2011

Вам нужно изменить параметры, которые вы передаете в 'MiniDumpWriteDump', убедитесь, что они содержат параметры, упомянутые здесь: Какой минимальный MINIDUMP_TYPE установлен для дампа собственного процесса C ++, который содержит компонент .net, чтобы иметь возможность использовать! Clrstack в windbg

...