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