Freigeben über


ICorDebugUnmanagedCallback::DebugEvent-Methode

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

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 Prozesszustand nach einem unverwalteten Ereignis unmöglich ist, bis der Debugger ICorDebugController::Continue aufruft; andernfalls false.

Hinweise

Wenn der Thread, der gedebuggt wird, ein Win32-Thread ist, benutzen Sie keine Member der Win32-Debugschnittstelle. Sie können nur ICorDebugController::Continue für einen Win32-Thread aufrufen, und nur dann, wenn Sie nach einem Out-of-Band-Ereignis fortfahren.

Der DebugEvent-Rückruf folgt nicht den Standardregeln für Rückrufe. Wenn Sie DebugEvent aufrufen, ist der Prozess im vom Betriebssystemdebugger angehaltenen Rohzustand. Der Prozess wird nicht synchronisiert. Er wird automatisch in den synchronisierten Zustand übergehen, wenn es notwendig ist, Anforderungen nach Informationen über verwalteten Code zu erfüllen, was zu anderen geschachtelten DebugEvent-Rückrufen führen kann.

Rufen Sie ICorDebugProcess::ClearCurrentException für den Prozess auf, um vor dem Fortsetzen des Prozesses ein Ausnahmeereignis zu ignorieren. Der Aufruf dieser Methode sendet DBG_CONTINUE anstatt DBG_EXCEPTION_NOT_HANDLED an die Anforderung zum Fortsetzen und entfernt automatisch Out-of-Band-Haltepunkte und Einzelschrittausnahmen. Out-of-Band-Ereignisse können jederzeit auftreten, selbst wenn die Anwendung, die gedebuggt wird, scheinbar angehalten wurde und wenn ein ausstehendes In-Band-Ereignis bereits vorhanden ist.

In .NET Framework, Version 2.0, sollte der Debugger sofort nach einem Out-of-Band-Haltepunktereignis fortgesetzt werden. Der Debugger sollte die ICorDebugProcess2::SetUnmanagedBreakpoint-Methode und die ICorDebugProcess2::ClearUnmanagedBreakpoint-Methode 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 gesendet werden, unformatierte Haltepunkte sein, die sich bereits im Anweisungsstream befinden, zum Beispiel ein Aufruf der Win32-DebugBreak-Funktion. Versuchen Sie nicht, ICorDebugProcess::ClearCurrentException, ICorDebugProcess::GetThreadContext, ICorDebugProcess::SetThreadContext oder einen anderen Member der Debug-API zu verwenden.

Anforderungen

Plattformen: siehe Systemanforderungen für .NET Framework.

Header: CorDebug.idl, CorDebug.h

Bibliothek: CorGuids.lib

.NET Framework-Versionen: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

Siehe auch

Referenz

ICorDebugUnmanagedCallback-Schnittstelle