Windows для профессионалов


Отладка по запросу


Windows позволяет подключать отладчик к любому процессу в любой момент време ни — эта функциональность называется отладкой по запросу (just-in-time debugging). В этом разделе я расскажу, кяк она работает Щелкнув кнопку Cancel, Вы сообщаете функции UnhandledExceptionFilter о том, что хотиге начать отладку процесса.

Для активизации отладчика UnhandledExceptionFilter просматривает раздел реестра.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug

Если Вы установили Visual Studio, то содержащийся в этом разделе параметр Debug ger имеет следующее значение:

"C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin\msrtev Rxe" -p %ld -e %ld

WINDOWS 98
В Windows 98 соответствующие значения хранятся не в реестре, а в файле Win.ini.

Строка, приведенная выше, сообщает системе, какой отладчик надо запустить (в данном случае — MSDev.exe). Естественно, Вы можете изменить это значение, указав другой отладчик. UnhandiedExceptionFilter передает отладчику два параметра в коман дной строке Первый — это идентификатор процесса, который нужно отладить, а второй — наследуемое событие со сбросом вручную, которое создается функцией UnhandiedExceptionFilter в занятом состоянии. Отладчик должен распознавать ключи -p и -e как идентификатор процесса и описатель события

Сформировав командную строку из идентификатора процесса и описателя собы тия, UnhandledExceptionFiltet запускает отладчик вызовом CreateProcess. Отладчик про

веряет аргументы в командной строке и, обнаружив ключ -p, подключается к соот ветствующему процессу вызовом DebugActiveProcess-

BOOL DebugActiveProcess(DWORD dwProcessID);

После этого система начинает уведомлять отладчик о состоянии отлаживаемого процесса, сообщая, например, сколько в нем потоков и кякие DLL спроецированы на его адресное пространство. На сбор этих данных отладчику нужно какое-то время, в течение которого поток UnhandledExceptionFilter должен находиться в режиме ожи дания. Для этого функция вызывает WaitForSingleObject и передает описатель создан ного ею события со сбросом вручную.


Начало  Назад  Вперед



Книжный магазин