Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Aktualisiert: November 2007
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
Bibliothek: CorGuids.lib
.NET Framework-Versionen: 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0
Siehe auch
Konzepte
Diagnostizieren von Fehlern mit Assistenten für verwaltetes Debuggen