Как открыть аварийный дамп C# (Minidump)
Наше приложение C# вызывает MinidumpWriteDump при необработанном исключении.
Я получил несколько аварийных дампов от пользователей, где я не могу открыть аварийный дамп с помощью SOS и увидеть исключение, вызвавшее сбой.
Тип дампа, который мы берем, это MiniDumpWithPrivateReadWriteMemory
Мой _NT_SYMBOL_PATH настроен на использование публичного сервера символов MS, и при отладке этого аварийного дампа в WinDBG он автоматически загружает необходимые библиотеки DLL (так как этот дамп был взят на машине с другой версией.NET 2, а именно той, которая заканчивается с.3053)
При запуске! Потоки я получаю этот вывод:
Не удалось запросить ThreadStore
Я перебрал ВСЕ ВОЗМОЖНЫЕ сайты, которые объясняют методы обработки разных версий CLR, отличных от той, что была взята на дамп-машине, ни один из них не работал для меня.
Что я могу сделать для устранения этих сбоев?
Мы делаем что-то не так (берём неправильный вид дампа из.NET-процесса и т. Д.)
РЕДАКТИРОВАТЬ:
Вот результат ~ *:
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 Id: 1338.b1c Приостановка: 0 Teb: 7ffd7000 незамерзший приоритет: 0 6 Id: 1338.f94 Приостановка: 0 Teb: 7ffd4000 Незамерзанный приоритет: 0 7 Идентификатор: 1338.11b4 Приостановка: 0 Теб: 7ff4f000 Незамороженный приоритет: 0 8 Идентификатор: 1338.1814 Приостановка: 0 Теб: 7ff4e000 Незамороженный приоритет: 0 9 Идентификатор: 1338.1cc4 Приостановка: 0 Теб: 7ffdb000 Незаполненный приоритет: 0 10 Id: 1338.1e48 Приостановлено: 0 Teb: 7ffd5000 Незамороженный приоритет: 0 11 Id: 1338.1a5c Приостановлено: 0 Teb: 7ff4c000 Незамороженный приоритет: 0 12 Id: 1338.1874 Приостановлено: 0 Teb: 7ff4b000 Незамороженный приоритет: 0 13 Id: 1338.1498 Приостановлено: 0 Теб: 7ff4a000 Незапорожненный Приоритет: 0
Вот результат! Анализа -v:
2 ответа
Вероятно, WinDbg загружает не ту версию библиотеки mscorwks. Попробуйте использовать.cordll -lp, чтобы явно указать WinDbg, какие модули отладки CLR следует загрузить, см. Также этот пост в блоге: Проблемы отладки управляемого кода в WinDbg с помощью SOS и PSSCOR2 (например, "Не удалось запросить ThreadStore")
Вам нужно изменить параметры, которые вы передаете в 'MiniDumpWriteDump', чтобы убедиться, что они содержат параметры, упомянутые здесь: Какой минимальный MINIDUMP_TYPE установлен для создания дампа собственного процесса C++, в котором размещается компонент.net, который можно использовать! Clrstack в windbg