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.
Wichtig
In Visual Studio 2015 ist diese Methode der Implementierung von Ausdrucksvaluatoren veraltet. Informationen zum Implementieren von CLR-Ausdrückevaluatoren finden Sie unter CLR-Ausdrückevaluatoren und Beispiel für verwalteten Ausdrückevaluator.
Es folgt eine Übersicht, wie Visual Studio die lokalen Variablen für eine Methode vom Ausdrucksauswerter (EE) abruft.
Visual Studio ruft getDebugProperty aus der Debug-Engine (DE) auf, um ein IDebugProperty2-Objekt zu erhalten, das alle Eigenschaften des Stapelrahmens darstellt, einschließlich der lokalen Variablen.
IDebugStackFrame2::GetDebugPropertyruft GetMethodProperty- auf, um ein Objekt zu erhalten, das die Methode beschreibt, in der der Breakpoint gesetzt wurde. Die DE stellt einen Symbolanbieter (IDebugSymbolProvider), eine Adresse (IDebugAddress) und einen Binder (IDebugBinder) bereit.IDebugExpressionEvaluator::GetMethodPropertyruft GetContainerField mit dem angegebenenIDebugAddress-Objekt auf, um ein IDebugContainerField- abzurufen, das die Methode darstellt, die die angegebene Adresse enthält.Die
IDebugContainerField-Schnittstelle wird für die IDebugMethodField Schnittstelle abgefragt. Diese Schnittstelle bietet Zugriff auf die lokalen Variablen der Methode.IDebugExpressionEvaluator::GetMethodPropertyinstanziiert eine Klasse (im BeispielCFieldPropertygenannt), die dieIDebugProperty2Schnittstelle ausführt, um die lokalen Variablen der Methode darzustellen. DasIDebugMethodField-Objekt wird in diesemCFieldProperty-Objekt zusammen mit den ObjektenIDebugSymbolProvider,IDebugAddressundIDebugBinderplatziert.Wenn das
CFieldProperty-Objekt initialisiert wird, wird GetInfo- für dasIDebugMethodField-Objekt aufgerufen, um eine FIELD_INFO Struktur abzurufen, die alle angezeigten Informationen zur Methode selbst enthält.IDebugExpressionEvaluator::GetMethodPropertygibt dasCFieldProperty-Objekt alsIDebugProperty2-Objekt zurück.Visual Studio ruft EnumChildren bei dem zurückgegebenen
IDebugProperty2-Objekt mit dem FilterguidFilterLocalsPlusArgsauf, wodurch ein IEnumDebugPropertyInfo2--Objekt zurückgegeben wird, das die lokalen Variablen der Methode enthält. Diese Aufzählung wird durch Aufrufe von EnumLocals und EnumArgumentsausgefüllt.Visual Studio ruft Weiter auf, um eine DEBUG_PROPERTY_INFO-Struktur für jedes lokale Element zu erhalten. Diese Struktur enthält einen Zeiger auf eine
IDebugProperty2-Schnittstelle für ein lokales Element.Visual Studio ruft GetPropertyInfo für jede lokale Variable auf, um den Namen, den Wert und den Typ der lokalen Variable abzurufen. Diese Informationen werden im Fenster Locals angezeigt.
In diesem Abschnitt
Implement GetMethodProperty beschreibt eine Implementierung von GetMethodProperty.
Lokale auflisten beschreibt, wie das Debugmodul (DE) einen Aufruf macht, um lokale Variablen oder Argumente aufzuzählen.
Abrufen lokaler Variablen beschreibt, wie die DE einen Aufruf ausführt, um den Namen, den Typ und den Wert einer oder mehrerer lokaler Variablen abzurufen.
Abrufen lokaler Werte beschreibt das Abrufen des Werts einer lokalen Variablen, wofür die Dienste eines Binder-Objekts erforderlich sind, das durch den Auswertungskontext bereitgestellt wird.
Lokale Variablen auswerten erklärt, wie lokale Variablen ausgewertet werden.
Verwandte Abschnitte
Auswertungskontext stellt die Argumente bereit, die übergeben werden, wenn die DE den Ausdruck evaluator (EE) aufruft.
MyCEE-Beispiel veranschaulicht einen Implementierungsansatz zur Erstellung eines Ausdrucksauswerters für die MyC-Sprache.