Freigeben über


Beispielimplementierung von lokalen Variablen

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.

  1. 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.

  2. IDebugStackFrame2::GetDebugProperty ruft 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.

  3. IDebugExpressionEvaluator::GetMethodProperty ruft GetContainerField mit dem angegebenen IDebugAddress-Objekt auf, um ein IDebugContainerField- abzurufen, das die Methode darstellt, die die angegebene Adresse enthält.

  4. Die IDebugContainerField-Schnittstelle wird für die IDebugMethodField Schnittstelle abgefragt. Diese Schnittstelle bietet Zugriff auf die lokalen Variablen der Methode.

  5. IDebugExpressionEvaluator::GetMethodProperty instanziiert eine Klasse (im Beispiel CFieldProperty genannt), die die IDebugProperty2 Schnittstelle ausführt, um die lokalen Variablen der Methode darzustellen. Das IDebugMethodField-Objekt wird in diesem CFieldProperty-Objekt zusammen mit den Objekten IDebugSymbolProvider, IDebugAddressund IDebugBinder platziert.

  6. Wenn das CFieldProperty-Objekt initialisiert wird, wird GetInfo- für das IDebugMethodField-Objekt aufgerufen, um eine FIELD_INFO Struktur abzurufen, die alle angezeigten Informationen zur Methode selbst enthält.

  7. IDebugExpressionEvaluator::GetMethodProperty gibt das CFieldProperty-Objekt als IDebugProperty2-Objekt zurück.

  8. Visual Studio ruft EnumChildren bei dem zurückgegebenen IDebugProperty2-Objekt mit dem Filter guidFilterLocalsPlusArgsauf, 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.

  9. 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.

  10. 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.

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.

Siehe auch