Freigeben über


ICorDebugManagedCallback2::MDANotification-Methode

Stellt Benachrichtigung bereit, dass bei der Codeausführung ein verwalteter Debugging-Assistent (Managed Debugging Assistant, MDA) in der Anwendung aufgetreten ist, die gedebuggt wird.

Syntax

HRESULT MDANotification(
    [in] ICorDebugController  *pController,
    [in] ICorDebugThread      *pThread,
    [in] ICorDebugMDA         *pMDA
);

Die Parameter

pController [in] Ein Zeiger auf eine ICorDebugController-Schnittstelle, die den Prozess oder die Anwendungsdomäne verfügbar macht, in der die MDA aufgetreten ist.

Ein Debugger sollte keine Annahmen darüber treffen, ob der Controller ein Prozess oder eine Anwendungsdomäne ist, obwohl er die Schnittstelle immer abfragen kann, um eine Bestimmung vorzunehmen.

pThread [in] Ein Zeiger auf eine ICorDebugThread-Schnittstelle, die den verwalteten Thread verfügbar macht, in dem das Debugereignis aufgetreten ist.

Wenn die MDA in einem nicht verwalteten Thread aufgetreten ist, ist der Wert null pThread .

Sie müssen die Betriebssystemthread-ID aus dem MDA-Objekt selbst abrufen.

pMDA [in] Ein Zeiger auf eine ICorDebugMDA-Schnittstelle , die die MDA-Informationen verfügbar macht.

Bemerkungen

Eine MDA ist eine heuristische Warnung und erfordert keine explizite Debuggeraktion mit Ausnahme des Aufrufs von ICorDebugController::Continue to resume execution of the application that is being debugged.

Die Common Language Runtime (CLR) kann bestimmen, welche MDAs ausgelöst werden und welche Daten zu einem beliebigen Zeitpunkt in einem beliebigen MDA enthalten sind. Daher sollten Debugger keine Funktionalität erstellen, die bestimmte MDA-Muster erfordert.

MDAs können in die Warteschlange gestellt und ausgelöst werden, kurz nachdem die MDA gefunden wurde. Dies kann passieren, wenn die Laufzeit warten muss, bis sie einen sicheren Punkt zum Auslösen der MDA erreicht, anstatt die MDA auszuschießen, wenn sie auftritt. Dies bedeutet auch, dass die Laufzeit eine Reihe von MDAs in einer einzigen Gruppe von Rückrufen in der Warteschlange auslösen kann (ähnlich wie bei einem "Anfügen"-Ereignisvorgang).

Ein Debugger sollte den Verweis auf eine ICorDebugMDA Instanz sofort nach der Rückgabe vom MDANotification Rückruf freigeben, damit die CLR den von einem MDA verbrauchten Arbeitsspeicher wiederverwenden kann. Durch das Freigeben der Instanz kann die Leistung verbessert werden, wenn viele MDAs ausgelöst werden.

Anforderungen

Plattformen: Siehe .NET unterstützte Betriebssysteme.

Kopfball: CorDebug.idl, CorDebug.h

Bibliothek: CorGuids.lib

.NET-Versionen: Verfügbar seit .NET Framework 2.0

Siehe auch