воскресенье, 26 октября 2008 г.

Установка WinDbg в качестве postmortem debugger

Это первое, что имеет смысл сделать в системе после развертывания тестируемого ПО.

Делается это элементарно - запустить консоль, и, находясь в каталоге с WinDbg (если его устанавливали штатным инсталлятором), набрать команду

windbg -I

Собственно, и все...
BTW, вернуть Dr. Watson, который ставится "из коробки" (для Windows XP), можно командой
drwtsn32 -i

Немного информации о том, что под "капотом":

При запуске в таком режиме эти программы изменяют запись в реестре по пути HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug.
Там есть два ключа - Debugger и Auto.
В первый ключ прописывается путь к отладчику и параметры, второй содержит 1 при необходимости автоматически активировать отладчик и 0 - для вывода сообщения Windows c "OK/Cancel".

Параметров у строки для отладчика может быть два:
первый %ld заменяется на PID процесса, который решил скончаться, со вторым сложнее - это способ соощить отладчику отладчику, какое событие случилось (из относящихся к его компетенции).

Некоторые распространенные записи, которые можно обнаружить в ключе AeDebug:

для VS7 — "C:\Program Files\Common Files\Microsoft Shared\VS7Debug\vs7jit.exe" -p %ld -e %ld
для VS6 — "C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\msdev.exe" -p %ld -e %ld
для CBuilder — "C:\Program Files\Borland\CBuilder5\Bin\bordbg51.exe -aeargs" %ld %ld
для VS8 — "C:\WINDOWS\system32\vsjitdebugger.exe" -p %ld -e %ld

NB: когда-то я долго недоумевал - почему AeDebug. Недавно меня осенило - Auto Entry!

Upd: Нормальные программисты для установки VS в качестве postmortem-отладчика используют страницу конфигурации IDE Options|Debugging|Just-In-Time :-)

Комментариев нет: