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 chiama ICorDebugController::Continue; in caso contrario, false
.
Osservazioni:
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 oltre 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 di debug del sistema operativo arrestato. 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 anziché DBG_EXCEPTION_NOT_HANDLED nella richiesta di continuazione e cancella automaticamente punti di interruzione fuori banda ed 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 oltre 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.
Intestazione: CorDebug.idl, CorDebug.h
Libreria: CorGuids.lib
Versioni di .NET Framework: disponibili dalla versione 1.0