Freigeben über


Ausdrucksauswerter-Architektur

Eine herstellereigene Sprache in das Debuggen von Visual Studio Paket integrieren bedeutet das Implementieren der erforderlichen Schnittstellen des Ausdrucksauswerters (EE) und Aufrufen der Schnittstellen des Anbieters (Common Language Runtime-Symbol SP) und des angegebenen Binders. Die SP- und Binder Objekte zusammen mit der aktuellen Ausführung adresse, sind der Kontext, in dem Ausdrücke ausgewertet werden. Die Informationen, die diese Schnittstellen bereitstellen und verarbeiten, stellen die Hauptkonzepte in der Architektur von einer EE dar.

Übersicht

Analysieren des Ausdrucks

Wenn Sie ein Programm gedebuggt werden mehrere Gründe für Ausdrücke jedoch immer ausgewertet, nachdem das Programm, das gedebuggt wird, an einem Haltepunkt angehalten wurde (entweder ein Haltepunkt gesetzt wird vom Benutzer oder einer durch eine Ausnahme verursacht.) Es ist in diesem Moment, wenn Visual Studio ein Stapelrahmen erhält, wie durch die IDebugStackFrame2-Schnittstelle aus dem DE Modul (Debuggen) dargestellt. Visual Studio ruft dann IDebugStackFrame2::GetExpressionContext an, die abgerufen IDebugExpressionContext2-Schnittstelle. Diese Schnittstelle stellt einen Kontext dar, in der Ausdrücke ausgewertet werden können. IDebugExpressionContext2::ParseText ist der Einstiegspunkt in das Begutachtungsverfahren. Herauf bis zu diesem Zeitpunkt werden alle Schnittstellen durch DE implementiert.

Wenn IDebugExpressionContext2::ParseText aufgerufen wird, instanziiert die DE EE, die der Sprache der Quelldatei zugeordnet ist, in der der Haltepunkt aufgetreten ist (DE instanziiert SH ebenfalls an diesem Punkt). Die EE wird von der IDebugExpressionEvaluator-Schnittstelle dargestellt. DE ruft dann IDebugExpressionEvaluator::Analyse an, wenn der Ausdruck in der Form (Text) an einen analysierten Ausdruck zu konvertieren, der zur Auswertung bereit ist. Der analysierte Ausdruck wird von der IDebugParsedExpression-Schnittstelle dargestellt. Beachten Sie, dass der Ausdruck in der Regel analysiert wird und nicht zu diesem Zeitpunkt ausgewertet.

DE erstellt ein Objekt, das die IDebugExpression2-Schnittstelle implementiert, das IDebugParsedExpression-Objekt in das IDebugExpression2-Objekt macht und das IDebugExpression2-Objekt aus IDebugExpressionContext2::ParseTextzurückgibt.

Der Ausdruck auswerten

Visual Studio ruft entweder IDebugExpression2::EvaluateSync oder IDebugExpression2::EvaluateAsync auf, um den analysierten Ausdruck auszuwerten. Aufruf IDebugParsedExpression::EvaluateSync beider Methoden (IDebugExpression2::EvaluateSync ruft die Methode sofort an, während IDebugExpression2::EvaluateAsync die Methode von einem Hintergrundthread aufruft), um den analysierten Ausdruck auszuwerten und eine IDebugProperty2-Schnittstelle zurückzugeben, die den Typ und den Wert des analysierten Ausdruck darstellt. IDebugParsedExpression::EvaluateSync SH Verwendung der angegebenen Adresse und den Binder, die den analysierten Ausdruck in einen Wert konvertiert, dargestellt durch die IDebugProperty2-Schnittstelle.

Beispiel:

Nach dem Erstellen eines Haltepunkts in einem ausgeführten Programm ist, wählt der Benutzer eine Variable im Schnellüberwachung Dialogfeld anzuzeigen. Dieses Dialogfeld zeigt den Namen der Variablen, deren Wert und den Typ an. Der Benutzer kann den Wert normalerweise ändern.

Wenn das Schnellüberwachung Dialogfeld angezeigt wird, wird der Name der Variablen, die validiert wird, als Text IDebugExpressionContext2::ParseTextgesendet. Dadurch wird ein IDebugExpression2-Objekt zurück, das den analysierten Ausdruck in diesem Fall die Variable darstellt. IDebugExpression2::EvaluateSync wird anschließend aufgerufen, um ein IDebugProperty2-Objekt, das den Typ und den Wert der Variablen darstellt, sowie den entsprechenden Namen zu erstellen. Es handelt sich diese Informationen, die angezeigt wird.

Wenn der Benutzer den Wert einer Variablen ändert, wird IDebugProperty2::SetValueAsString mit dem neuen Wert aufgerufen, der den Wert der Variablen im Speicher ändert, sodass es verwendet wird, wenn das Programm ausgeführt wird.

Weitere Informationen finden Sie unter Lokale Variablen anzeigen für diesen Prozess zum Anzeigen der Werte von Variablen. Weitere Informationen finden Sie unter Ruft den Wert einer lokalen Variablen ändern , wie der Wert einer Variablen ändert.

In diesem Abschnitt

Siehe auch

Konzepte

Ruft den Wert einer lokalen Variablen ändern

Weitere Ressourcen

Schreiben eines Common Language Runtime-Ausdrucksauswerter

Lokale Variablen anzeigen