Отладка приложений с помощью Dr.Watson
Tuesday, 08 Dec 2009Иногда возникает необходимость узнать, что же происходит в мозгах у системы, при том, что в системные логи операционка не пишет никакой информации. Для этого нужно воспользоваться встроенным в систему дебаггером Dr.Watson. Его расположение по умолчанию %SystemRoot%\system32\drwtsn32.exe
1. Для начала нужно зарегистрировать Dr Watson как дебаггер по умолчанию, для этого говорим
Пуск -> Выполнить (или “майкрософтовское окошко” + R) и запустить drwtsn32 -i
2. Теперь настроим Dr Watson
Пуск -> Выполнить и drwtsn32
3. Изменяем в соответствии
Файл журнала = путь по которому будет находится лог файл (Drwtsn32.log)
Аварийная копия памяти = путь по которому ляжет дамп памяти (user.dmp)
Тип аварийного дампа = Полный
Параметры = включить все радиокнопки (можно не включать Визуальное и Звуковое оповещения)
4. Когда какое либо приложение, которое и нужно отследить, вылетит в очередной раз дамп памяти создатся в том файле который мы определили в 3 пункте, после чего мы его можем открыть и начать ковырять, на предмет поиска непонятностей.
Отключить Dr.Watson можно следующим образом:
- Вызвать редактор реестра: Пуск -> Выполнить, выполнить команду regedit
- Зайти в следующую ветвь реестра:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\
- Сделать резервную копию имеющейся ветки, чтобы была возможность откатиться: щелкаем в раздел AeDebug, затем правой клавишей мышки вызываем меню, там пункт Экспортировать, выбираем куда и Сохранить.
- После этого удаляем из системного реестра раздел AeDebug.
В удаленном разделе системного реестра AeDebug находятся конфигурации параметров которые использует системный отладчик Windows Dr. Watson. Этот дебаггер назначается по дефолту и используется при сбоях в работе приложений (в том случае если параметр Auto установлен в значение 1). Дефолтные настройки для Dr. Watson:
Тип = String (REG_SZ)
Значение = 1 или 0. (По умолчанию “1″)
Параметр = Debugger
Тип = String (REG_SZ)
Значение = drwtsn32 -p %ld -e %ld -g