Freigeben über


ICorDebugUnmanagedCallback::DebugEvent-Methode

Benachrichtigt den Debugger, dass ein natives Ereignis ausgelöst wurde.

Syntax

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

Parameter

pDebugEvent [in] Ein Zeiger auf das systemeigene Ereignis.

fOutOfBand[in] true, wenn die Interaktion mit dem verwalteten Prozessstatus nach einem nicht verwalteten Ereignis unmöglich ist, bis der Debugger ICorDebugController::Continue aufruft; andernfalls false.

Hinweise

Wenn der Thread, für den das Debugging ausgeführt wird, ein Win32-Thread ist, verwenden Sie keine Member der Win32-Debugschnittstelle. Sie können ICorDebugController::Continue nur in einem Win32-Thread aufrufen und nur dann, wenn der Vorgang über ein Out-of-Band-Ereignis hinaus fortgesetzt wird.

Der DebugEvent-Rückruf folgt nicht den Standardregeln für Rückrufe. Wenn Sie DebugEvent aufrufen, befindet sich der Prozess im unformatierten, für das Betriebssystemdebugging angehaltenen Zustand. Der Prozess wird nicht synchronisiert. Er wechselt ggf. automatisch in den synchronisierten Zustand, um Anforderungen in Bezug auf Informationen zu verwaltetem Code zu erfüllen, was zu anderen geschachtelten DebugEvent-Rückrufen führen kann.

Rufen Sie ICorDebugProcess::ClearCurrentException für den Prozess auf, um ein Ausnahmeereignis zu ignorieren, bevor der Prozess fortgesetzt wird. Das Aufrufen dieser Methode sendet DBG_CONTINUE anstelle von DBG_EXCEPTION_NOT_HANDLED für die Fortsetzungsanforderung und löscht automatisch Out-of-Band-Haltepunkte und Einzelschrittausnahmen. Out-of-Band-Ereignisse können jederzeit auftreten, auch wenn die Anwendung, für die das Debugging ausgeführt wird, anscheinend angehalten ist und wenn bereits ein ausstehendes In-Band-Ereignis vorhanden ist.

In .NET Framework 2.0, sollte der Debugger ein Out-of-Band-Haltepunktereignis überspringen und sofort fortgesetzt werden. Der Debugger sollte die Methoden ICorDebugProcess2::SetUnmanagedBreakpoint und ICorDebugProcess2::ClearUnmanagedBreakpoint verwenden, um Haltepunkte hinzuzufügen und zu entfernen. Diese Methoden überspringen automatisch alle Out-of-Band-Haltepunkte. Daher sollten die einzigen Out-of-Band-Haltepunkte, die verteilt werden, unformatierte Haltepunkte sein, die sich bereits im Anweisungsdatenstrom befinden, z. B. ein Aufruf der Win32-Funktion DebugBreak. Versuchen Sie nicht, ICorDebugProcess::ClearCurrentException, ICorDebugProcess::GetThreadContext, ICorDebugProcess::SetThreadContext oder ein anderes Element der Debugging-API zu verwenden.

Anforderungen

Plattformen: Informationen finden Sie unter Systemanforderungen.

Header: CorDebug.idl, CorDebug.h

Bibliothek: CorGuids.lib

.NET Framework-Versionen: Seit Version 1.0 verfügbar.

Siehe auch