ICorDebugManagedCallback2::MDANotification-Methode
Informiert darüber, dass die Codeausführung auf einen verwalteten Debugging-Assistenten (Managed Debugging Assistant, MDA) in der Anwendung gestoßen ist, die gerade gedebuggt wird.
Syntax
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 der die MDA aufgetreten ist.
Ein Debugger sollte nicht feststellen, ob es sich bei dem Controller um einen Prozess oder eine Anwendungsdomäne handelt, obwohl er jederzeit die Schnittstelle abfragen kann, um dies zu ermitteln.
pThread
[in] Ein Zeiger auf eine ICorDebugThread-Schnittstelle, die den verwalteten Thread verfügbar macht, in dem das Debugereignis aufgetreten ist.
Wenn der MDA in einem nicht verwalteten Thread aufgetreten ist, ist der Wert von pThread
NULL.
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.
Hinweise
Ein MDA ist eine heuristische Warnung und erfordert keine explizite Debuggeraktion, mit Ausnahme des Aufrufs von ICorDebugController::Continue, um die Ausführung der Anwendung fortzusetzen, die debuggt wird.
Die Common Language Runtime (CLR) kann bestimmen, welche MDAs ausgelöst werden und welche Daten zu einem beliebigen Zeitpunkt in einem bestimmten MDA enthalten sind. Aus diesem Grund sollten Debugger keine Funktionen erstellen, die bestimmte MDA-Muster erfordern.
MDAs können kurz nach dem Auftreten des MDA in die Warteschlange eingereiht und ausgelöst werden. Dies kann passieren, wenn die Runtime warten muss, bis sie einen sicheren Punkt für das Auslösen des MDA erreicht, anstatt diesen sofort beim Zusammentreffen auszulösen. Dies bedeutet auch, dass die Runtime eine Reihe von MDAs in einer einzelnen Gruppe von Rückrufen in der Warteschlange auslöst (ähnlich wie bei einem Ereignisvorgang zum Anfügen).
Ein Debugger sollte den Verweis auf eine ICorDebugMDA
-Instanz unmittelbar nach der Rückgabe vom MDANotification
-Rückruf freigeben, damit die CLR den von einem MDA belegten Arbeitsspeicher wiederverwenden kann. Das Freigeben der Instanz kann die Leistung verbessern, wenn viele MDAs ausgelöst werden.
Anforderungen
Plattformen: Informationen finden Sie unter Systemanforderungen.
Header: CorDebug.idl, CorDebug.h
Bibliothek: CorGuids.lib
.NET Framework-Versionen: Seit 2.0 verfügbar.