ICorDebugUnmanagedCallback::DebugEvent (Método)

Notifica al depurador que se ha desencadenado un evento nativo.

Sintaxis

HRESULT DebugEvent (  
    [in] LPDEBUG_EVENT  pDebugEvent,  
    [in] BOOL           fOutOfBand  
);  

Parámetros

pDebugEvent
[in] Puntero al evento nativo.

fOutOfBand
[in] true, si la interacción con el estado del proceso administrado es imposible después de que se produzca un evento no administrado, hasta que el depurador llame a ICorDebugController::Continue; de lo contrario, false.

Comentarios

Si el subproceso que se depura es un subproceso win32, no use ningún miembro de la interfaz de depuración de Win32. Solo puede llamar a ICorDebugController::Continue en un subproceso de Win32 y solo al continuar más allá de un evento fuera de banda.

La devolución de llamada DebugEvent no sigue las reglas estándar para las devoluciones de llamada. Cuando llame a DebugEvent, el proceso estará en el estado sin formato, de depuración del SO, detenido. El proceso no se sincronizará. Entrará automáticamente en el estado sincronizado cuando sea necesario para satisfacer las solicitudes de información sobre el código administrado, lo que puede dar lugar a otras devoluciones de llamada DebugEvent anidadas.

Llame a ICorDebugProcess::ClearCurrentException en el proceso para omitir un evento de excepción antes de continuar con el proceso. La llamada a este método envía DBG_CONTINUE en lugar de DBG_EXCEPTION_NOT_HANDLED en la solicitud de continuación, y borra automáticamente los puntos de interrupción fuera de banda y las excepciones de un solo paso. Los eventos fuera de banda pueden llegar en cualquier momento, incluso cuando la aplicación que se está depurando aparece detenida y cuando ya existe un evento pendiente en banda.

En .NET Framework, versión 2.0, el depurador debe continuar inmediatamente después de un evento de punto de interrupción fuera de banda. El depurador debe usar los métodos ICorDebugProcess2::SetUnmanagedBreakpoint e ICorDebugProcess2::ClearUnmanagedBreakpoint para agregar y quitar puntos de interrupción. Estos métodos omitirán automáticamente los puntos de interrupción fuera de banda. Por lo tanto, los únicos puntos de interrupción fuera de banda que se envían deben ser puntos de interrupción sin procesar que ya están en el flujo de instrucciones, como una llamada a la función DebugBreak Win32. No intente usar ICorDebugProcess::ClearCurrentException, ICorDebugProcess::GetThreadContext, ICorDebugProcess::SetThreadContext o cualquier otro miembro de la API de depuración.

Requisitos

Plataformas: Vea Requisitos de sistema.

Encabezado: CorDebug.idl, CorDebug.h

Biblioteca: CorGuids.lib

Versiones de .NET Framework: está disponible desde la versión 1.0

Consulte también