Condividi tramite


Metodo ICorDebugUnmanagedCallback::DebugEvent

Notifica al debugger la generazione di un evento nativo.

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, finché il debugger non chiama ICorDebugController::Continue; in caso contrario, false.

Note

Se il thread sottoposto a debug è un thread Win32, non utilizzare membri dell'interfaccia di debug Win32. È possibile chiamare ICorDebugController::Continue solo su un thread Win32 e solo continuando dopo un evento fuori banda.

Il callback di DebugEvent non segue le regole standard per i callback. Quando si chiama DebugEvent, il processo sarà semplicemente nello stato di arresto del debug del sistema operativo. Il processo non verrà sincronizzato. Passerà automaticamente allo stato sincronizzato quando è necessario soddisfare richieste di informazioni sul codice gestito e questo può dare luogo ad altri callback di DebugEvent annidati.

Chiamare ICorDebugProcess::ClearCurrentException sul processo per ignorare un evento di eccezione prima di continuare con il processo. La chiamata di questo metodo causa l'invio di DBG_CONTINUE anziché DBG_EXCEPTION_NOT_HANDLED per la richiesta di continuazione e la cancellazione automatica delle eccezioni relative al debug passo a passo e dei punti di interruzione fuori banda. Gli eventi fuori banda possono verificarsi in qualsiasi momento, anche quando l'applicazione sottoposta a debug sembra in stato di arresto e quando esiste già un evento in banda in attesa.

In .NET Framework versione 2.0 il debugger deve proseguire immediatamente dopo un evento di punto di interruzione fuori banda. Il debugger deve utilizzare i metodi ICorDebugProcess2::SetUnmanagedBreakpoint e ICorDebugProcess2::ClearUnmanagedBreakpoint per aggiungere e rimuovere punti di interruzione. Questi metodi ignoreranno automaticamente qualsiasi punto di interruzione fuori banda. I soli punti di interruzione fuori banda da inviare devono pertanto essere semplici punti di interruzione già nel flusso di istruzioni, ad esempio una chiamata alla funzione DebugBreak Win32. Non utilizzare 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: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

Vedere anche

Riferimenti

Interfaccia ICorDebugUnmanagedCallback