Freigeben über


ICorDebugManagedCallback2::MDANotification-Methode

Stellt eine Benachrichtigung bereit, dass die Codeausführung in der Anwendung, die gedebuggt wird, einen Assistenten für verwaltetes Debuggen (Managed Debugging Assistant, MDA) festgestellt hat.

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

Parameter

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

    Ein Debugger darf keine Annahmen darüber anstellen, ob es sich beim Controller um einen Prozess oder um eine Anwendungsdomäne handelt, auch wenn bei der Schnittstelle jederzeit eine Bestimmung abgefragt werden kann.

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

    Wenn der MDA für einen nicht verwalteten Thread aufgetreten ist, lautet der Wert von pThread NULL.

    Sie müssen die Thread-ID des Betriebssystems aus dem MDA-Objekt selbst abrufen.

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

Hinweise

Ein MDA ist eine heuristische Warnung und erfordert keine explizite Debuggeraktion außer dem Aufrufen von ICorDebugController::Continue, um die Ausführung der Anwendung, die gedebuggt wird, fortzusetzen.

Die Common Language Runtime (CLR) kann festlegen, welche MDAs ausgelöst werden und welche Daten sich an einer beliebigen Position in einem beliebigen, angegebenen MDA befinden. Daher sollten Debugger keine Funktionalität erstellen, die spezifische MDA-Muster erfordert.

MDAs werden möglicherweise in die Warteschlange gestellt und ausgelöst, kurz nachdem der MDA festgestellt wurde. Dies kann der Fall sein, wenn die Laufzeit warten muss, bis sie einen sicheren Punkt zum Auslösen des MDAs erreicht, statt den MDA unmittelbar bei seiner Feststellung auszulösen. Das bedeutet auch, dass die Laufzeit eventuell einige MDAs in einer einzelnen Gruppe von Rückrufen, die sich in der Warteschlange befinden, auslösen kann (ähnlich wie ein Vorgang zum "Anfügen" von Ereignissen).

Ein Debugger sollten den Verweis auf eine ICorDebugMDA-Instanz sofort nach der Rückgabe vom MDANotification-Rückruf freigeben, um der CLR die Wiederverwendung des von einem MDA belegten Arbeitsspeichers zu ermöglichen. Das Freigeben der Instanz kann die Leistung verbessern, wenn viele MDAs ausgelöst werden.

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

Siehe auch

Referenz

ICorDebugManagedCallback2-Schnittstelle

ICorDebugManagedCallback-Schnittstelle

Konzepte

Diagnostizieren von Fehlern mit Assistenten für verwaltetes Debuggen