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





Вы можете использовать adplus -crash или userdump.exe.
debugdiag полностью сценарий. Когда у меня возникали подобные проблемы, мы заставляли его сканировать определенные имена процессов и присоединяться автоматически.
Лучший способ - отредактировать реестр, чтобы при сбоях он вызывал соответствующее приложение для создания дампа. Так что в вашем случае я бы попросил доктора Ватсона сгенерировать аварийный дамп.
См. связь
В основном редактируем ключ реестра 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 запускался в будущем.
Создайте общий обработчик исключений для своей программы. Внутри обработчика исключений напишите код для ручного создания дампа по желаемому пути.
Эта ссылка поможет http://brakertech.com/howto-c-generate-dump-file-on-crash/