Функция DebugActiveProcess


Функция DebugActiveProcess дает возможность отладчику подключиться к  активному процессу и отлаживать его.

Синтаксис

BOOL DebugActiveProcess(
  DWORD dwProcessId
);

Параметры

dwProcessId

[in] Идентификатор процесса, который будет отлаживаться. Отладчику  предоставляется доступ к отлаживаемому процессу, как если бы он создавал процесс с флажком DEBUG_ONLY_THIS_PROCESS. Дополнительные подробности см.  в разделе Замечаний.

Возвращаемые значения

Если функция завершается успешно, возвращаемое значение не нуль.

Если функция завершается ошибкой, возвращаемое значение равняется нулю. Чтобы получить дополнительную информацию об ошибке, вызовите  GetLastError.

Замечания

Чтобы остановить отладку процесса, Вы должны выйти из него или вызвать функцию DebugActiveProcessStop. Выход из отладчика также порождает выход из процесса, если Вы не используете функцию DebugSetProcessKillOnExit.

Отладчик  должен иметь соответствующий доступ к целевому процессу; он должен быть в состоянии открыть процесс для доступа PROCESS_ALL_ACCESS. В среде Windows Me/98/95, отладчик  имеет соответствующий доступ, если идентификатор процесса допустим. На других версиях Windows, DebugActiveProcess может завершиться ошибкой, если целевой процесс создавался с дескриптором безопасности, который предоставляет отладчику что-то меньшее чем полный доступ. 

Обратите внимание! на то, что, если процессу отладки предоставили привилегию SE_DEBUG_NAME и включили в работу, он может отладить любой процесс.

После того, как система проверит идентификатор процесса и выяснит, что подсоединение  отладки было сделано правильно, функция возвратит значение ИСТИНА (TRUE). Отладчик, как предполагается, будет ожидать события отладки, используя функцию WaitForDebugEvent. Система приостанавливает все потоки в процессе и отправляет события отладчика, обозначающие текущее состояние процесса.

Система отправляет отладчику единственное событие отладки CREATE_PROCESS_DEBUG_EVENT, обозначающее процесс, указанный параметром dwProcessId. Член  lpStartAddress структуры CREATE_PROCESS_DEBUG_INFO равен ПУСТО (NULL).

Для каждого потока текущей части процесса, система отправляет событие отладки CREATE_THREAD_DEBUG_EVENT. Член lpStartAddress структуры CREATE_THREAD_DEBUG_INFO равен ПУСТО (NULL).

Для каждой динамически подключаемой библиотеки (DLL) в текущий момент загруженной в адресное пространство целевого процесса, система отправляет событие отладки LOAD_DLL_DEBUG_EVENT. Система подготавливает первый поток в процессе, чтобы исполнить команду контрольного останова после его возобновления. Продолжение работы этого потока заставляет его возвратиться к тому, что оно делало до подключения отладчика.

После того, как все это было сделано, система возобновляет все потоки в процессе. Когда первый поток в возобновит работу процесса, он исполнит команду контрольного останова, которая заставляет событие отладки EXCEPTION_DEBUG_EVENT отправить в отладчик. Все будущие события отладки отправляются в отладчик, используя обычный механизм и правила.

Смотри также

Обзор Основы отладки, Функции, используемые при отладке, CreateProcess, CREATE_PROCESS_DEBUG_INFO, CREATE_THREAD_DEBUG_INFO, DebugActiveProcessStop, WaitForDebugEvent

Размещение и совместимость DebugActiveProcess

К

Windows XP

Да 

л

Windows 2000 Professional

Да

и

Windows NT  Workstation

Да

е

Windows Me

Да

н

Windows 98

Да

т

Windows 95

Да

 
С

Windows Server 2003

Да

е Windows 2000 Server Да
р Windows NT Server Да 
в    
е    
р    

Используемая библиотека

Kernel32.lib

Используемая DLL kernel32.dll
 Заголовочный файл  

- объявлено в

Winbase.h

 - включено в

Windows.h

 Unicode

Нет

 Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки
Переведено 22.06.2005 17:27 ©Copyright V. Sokovikov
Hosted by uCoz