Создать дамп с неуправляемым кодом сбоя? - PullRequest
4 голосов
/ 05 ноября 2008

Есть ли способ получить полный аварийный дамп при внезапном сбое моего приложения?

Проблема в том, что я подозреваю, что это происходит из-за неуправляемого кода, который убивает саму платформу .net, и из-за этого, если в момент сбоя к приложению не подключен отладчик, приложение даже не получает шанс справиться с аварией.

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

Редактировать: Мне известен Microsoft Debugging SDK, и я также только что узнал о DebugDiag. Я хотел бы сделать это без необходимости каждый раз подключаться к приложению, так как обычно это происходит в середине продажи, и у меня нет времени подключать отладчик и исследовать трассировку стека. Похоже, что DebugDiag позволяет мне настроить правило для этого, но, похоже, он работает только на уже запущенных процессах, а не ожидает запуска какого-либо процесса.

Ответы [ 4 ]

2 голосов
/ 05 ноября 2008

Вы можете использовать adplus -crash или userdump.exe .

0 голосов
/ 23 марта 2012

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

Эта ссылка поможет http://brakertech.com/howto-c-generate-dump-file-on-crash/

0 голосов
/ 23 марта 2012

Лучший способ - отредактировать реестр так, чтобы при возникновении сбоев он вызывал соответствующее приложение для генерации дампа. Так что в вашем случае я бы попросил доктора Ватсона создать аварийный дамп.

См. ссылка

В основном редактируем раздел реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug

заданные значения

Value Name = Auto
Type = String (REG_SZ)
Data Value = 1 or 0. (Default is 1)
Value Name = Debugger
Type = String (REG_SZ)
Data Value = drwtsn32 -p %ld -e %ld -g

Это вызовет доктора Ватсона в момент сбоя вашего приложения. См. Ссылку в этом сообщении для получения дополнительной информации, обратите внимание, что вам нужно будет установить значение Auto на 0, если вы не хотите, чтобы в будущем вызывался Dr. Watson.

0 голосов
/ 01 июня 2009

debugdiag полностью сценарий . Когда у меня возникали подобные проблемы, мы выполняли сканирование на наличие определенных имен процессов и автоматически присоединялись.

...