Всякий раз, когда мое приложение генерирует необработанное исключение, я бы хотел, чтобы WinDbg обнаружил это исключение на моей машине для отладки, а не Dr. Watson и т.д. Как это можно настроить?
Настройте WinDbg как отладчик по умолчанию
Ответ 1
Запустите windbg -I
, чтобы установить его в отладчик post mortem по умолчанию.
Как указывает Курт ниже, WinDbg поставляется как в 32, так и в 64-разрядных версиях. Выполнение windbg -I
устанавливает отладчик post mortem для процессов, соответствующих битте отладчика.
Вы можете установить обе версии WinDbg бок о бок, если вам нужно иметь 32 и 64-битные версии.
В файле справки:
-I[S]
Устанавливает WinDbg как отладчик postmortem. Подробнее см. Включение отладки Postmortem. После это действие предпринято, успех или отображается сообщение об ошибке. Если S включено, эта процедура выполнена тихо, если это будет успешным; только отображаются сообщения о сбое. -I параметр не должен использоваться с другие параметры. Эта команда будет фактически не запускать WinDbg, хотя На мгновение может появиться окно WinDbg.
Ответ 2
Вот файл реестра для настройки WinDbg как управляемого отладчика и собственного отладчика:
Windows Registry Editor Version 5.00
;This reg file installs just-in-time debuggers to capture a dump of all process
;crashes for the machine.
;
;Assumes 32-bit debugger is cdb.exe and is installed to C:\debuggers\x86\.
;Assumes 64-bit debugger is cdb.exe and is installed to C:\debuggers\x64\.
;
;Assumes crash dumps can be written to C:\crash_dumps\.
;Make sure all users have write access to this directory.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework]
"DbgManagedDebugger"="\"c:\\debuggers\\x64\\windbg.exe\" -pv -p %ld "
"DbgJITDebugLaunchSetting"=dword:00000002
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]
"Debugger"="\"c:\\debuggers\\x64\\windbg.exe\" -pv -p %ld "
"Auto"="1"
;The following keys are only used on 64-bit versions of Windows (note Wow6432Node).
;They can be safely created with no side-effects on 32-bit versions of Windows.
;Alternatively, you can delete the remainder of this file if you’re running a
;32-bit version of Windows.
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug]
"Debugger"="\"c:\\debuggers\\x86\\windbg.exe\" -pv -p %ld "
"Auto"="1"
Автоматическое взятие дампа при сбое процесса - это запись об этом из команды CLR.