Поделиться через


Функция DebugActiveProcess (debugapi.h)

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

Синтаксис

BOOL DebugActiveProcess(
  [in] DWORD dwProcessId
);

Параметры

[in] dwProcessId

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

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

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

Если функция завершается сбоем, возвращаемое значение равно 0 (ноль). Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

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

Отладчик должен иметь соответствующий доступ к целевому процессу и иметь возможность открыть процесс для PROCESS_ALL_ACCESS. 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 в отладчик. Все будущие события отладки отправляются в отладчик с помощью обычного механизма и правил.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header debugapi.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

CREATE_PROCESS_DEBUG_INFO

CREATE_THREAD_DEBUG_INFO

CreateProcess

DebugActiveProcessStop

Функции отладки

Отладка выполняющегося процесса

WaitForDebugEvent