Создание дампов CLR с помощью breakpad
Я использую Google Breakpad для создания аварийных дампов для моего приложения Windows, когда оно падает.
Мое приложение смешивает собственный код C++ с кодом C# CLR. Дампы, создаваемые breakpad, не содержат никакой информации CLR.
Можно ли включить дамп CLR с помощью Breakpad? Какие API необходимы для создания дампов CLR?
2 ответа
Что вы подразумеваете под "информацией CLR"? Я использовал Breakpad для создания аварийных дампов, и я могу отлаживать их с помощью SOS.
Изменить: вот что вам нужно сделать
.loadby sos clr $$ For .NET 4
~0s $$ Most crashes are on Thread 0
!pe $$ Print the exception
~1s $$ Let's take a look at Thread 1
!clrstack $$ Dump the managed stack
Как я объяснил в разделе Как получить хороший аварийный дамп в.NET, должны быть выполнены следующие условия:
- разрядность соответствует разрядности процесса
- нужен дамп со всей памятью
Последнее соответствует MiniDumpWithFullMemory
перечисления MINIDUMP_TYPE.