Compartir a través de


Función DebugActiveProcess (debugapi.h)

Permite que un depurador se adjunte a un proceso activo y lo depure.

Sintaxis

BOOL DebugActiveProcess(
  [in] DWORD dwProcessId
);

Parámetros

[in] dwProcessId

Identificador del proceso que se va a depurar. Al depurador se le concede acceso de depuración al proceso como si creara el proceso con la marca DEBUG_ONLY_THIS_PROCESS . Para obtener más información, vea la sección Comentarios.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es 0 (cero). Para obtener información de error extendida, llame a GetLastError.

Comentarios

Para detener la depuración del proceso, debe salir del proceso o llamar a la función DebugActiveProcessStop . Salir del depurador también sale del proceso a menos que use la función DebugSetProcessKillOnExit .

El depurador debe tener el acceso adecuado al proceso de destino y debe poder abrir el proceso para PROCESS_ALL_ACCESS. DebugActiveProcess puede producir un error si el proceso de destino se crea con un descriptor de seguridad que concede al depurador algo menor que el acceso total. Si el proceso de depuración tiene el privilegio SE_DEBUG_NAME concedido y habilitado, puede depurar cualquier proceso.

Una vez que el sistema comprueba el identificador de proceso y determina que se están realizando datos adjuntos de depuración válidos, la función devuelve TRUE. A continuación, se espera que el depurador espere eventos de depuración mediante la función WaitForDebugEvent . El sistema suspende todos los subprocesos del proceso y envía los eventos del depurador que representan el estado actual del proceso.

El sistema envía al depurador un único evento de depuración CREATE_PROCESS_DEBUG_EVENT que representa el proceso especificado por el parámetro dwProcessId . El miembro lpStartAddress de la estructura CREATE_PROCESS_DEBUG_INFO es NULL.

Para cada subproceso que forma parte actualmente del proceso, el sistema envía un evento de depuración CREATE_THREAD_DEBUG_EVENT . El miembro lpStartAddress de la estructura CREATE_THREAD_DEBUG_INFO es NULL.

Para cada biblioteca de vínculos dinámicos (DLL) que se carga actualmente en el espacio de direcciones del proceso de destino, el sistema envía un evento de depuración LOAD_DLL_DEBUG_EVENT . El sistema organiza el primer subproceso del proceso para ejecutar una instrucción de punto de interrupción después de que se reanude. Continuar con este subproceso hace que vuelva a hacer lo mismo que antes de que se asocie el depurador.

Una vez hecho todo esto, el sistema reanuda todos los subprocesos del proceso. Cuando se reanuda el primer subproceso del proceso, ejecuta una instrucción de punto de interrupción que hace que se envíe un evento de depuración EXCEPTION_DEBUG_EVENT al depurador. Todos los eventos de depuración futuros se envían al depurador mediante el mecanismo y las reglas normales.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado debugapi.h (incluya Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

CREATE_PROCESS_DEBUG_INFO

CREATE_THREAD_DEBUG_INFO

CreateProcess

DebugActiveProcessStop

Funciones de depuración

Depuración de un proceso en ejecución

WaitForDebugEvent