Metodo ICorDebugUnmanagedCallback::DebugEvent

Notifica al debugger che è stato generato un evento nativo.

Sintassi

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

Parametri

pDebugEvent
[in] Puntatore all'evento nativo.

fOutOfBand
[in] true, se l'interazione con lo stato del processo gestito è impossibile dopo che si verifica un evento non gestito, fino a quando il debugger non chiama ICorDebugController::Continue; in caso contrario, false.

Commenti

Se il thread sottoposto a debug è un thread Win32, non usare alcun membro dell'interfaccia di debug Win32. È possibile chiamare ICorDebugController::Continue solo su un thread Win32 e solo quando si continua dopo un evento fuori banda.

Il DebugEvent callback non segue le regole standard per i callback. Quando si chiama DebugEvent, il processo si trova nello stato non elaborato arrestato dal debug del sistema operativo. Il processo non verrà sincronizzato. Verrà automaticamente immesso lo stato sincronizzato quando necessario per soddisfare le richieste di informazioni sul codice gestito, che può comportare altri callback annidati DebugEvent .

Chiamare ICorDebugProcess::ClearCurrentException nel processo per ignorare un evento di eccezione prima di continuare il processo. La chiamata a questo metodo invia DBG_CONTINUE invece di DBG_EXCEPTION_NOT_HANDLED nella richiesta continua e cancella automaticamente i punti di interruzione fuori banda e le eccezioni a passaggio singolo. Gli eventi fuori banda possono verificarsi in qualsiasi momento, anche quando l'applicazione sottoposta a debug viene arrestata e quando esiste già un evento in banda in sospeso.

In .NET Framework versione 2.0, il debugger deve continuare immediatamente dopo un evento di punto di interruzione fuori banda. Il debugger deve usare i metodi ICorDebugProcess2::SetUnmanagedBreakpoint e ICorDebugProcess2::ClearUnmanagedBreakpoint per aggiungere e rimuovere punti di interruzione. Questi metodi ignorano automaticamente tutti i punti di interruzione fuori banda. Di conseguenza, gli unici punti di interruzione fuori banda inviati devono essere punti di interruzione non elaborati già presenti nel flusso di istruzioni, ad esempio una chiamata alla funzione Win32 DebugBreak . Non provare a usare ICorDebugProcess::ClearCurrentException, ICorDebugProcess::GetThreadContext, ICorDebugProcess::SetThreadContext o qualsiasi altro membro dell'API di debug.

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: CorDebug.idl, CorDebug.h

Libreria: CorGuids.lib

Versioni di .NET Framework: Disponibile dalla versione 1.0

Vedi anche