Freigeben über


Auswerten eines Ausdrucks im Überwachungsfenster

Von Bedeutung

In Visual Studio 2015 ist diese Methode der Implementierung von Ausdrucksvaluatoren veraltet. Informationen zur Implementierung von CLR-Ausdrucksauswertern finden Sie unter CLR-Ausdrucksauswerter und Beispiel für verwaltete Ausdrucksauswerter.

Wenn die Ausführung angehalten wird, ruft Visual Studio das Debugmodul (DE) auf, um den aktuellen Wert jedes Ausdrucks in der Überwachungsliste zu ermitteln. Die DE wertet jeden Ausdruck mit einem Ausdrucksauswerter (EE) aus, und Visual Studio zeigt seinen Wert im Überwachungsfenster an.

Im Folgenden finden Sie eine Übersicht darüber, wie ein Ausdruck einer Watchliste ausgewertet wird:

  1. Visual Studio ruft den GetExpressionContext der DE auf, um einen Ausdruckskontext abzurufen, der zum Auswerten von Ausdrücken verwendet werden kann.

  2. Für jeden Ausdruck in der Überwachungsliste ruft Visual Studio ParseText auf, um den Ausdruckstext in einen analysierten Ausdruck zu konvertieren.

  3. IDebugExpressionContext2::ParseText ruft Parse auf, um die eigentliche Arbeit der Analyse des Texts zu erledigen und ein IDebugParsedExpression -Objekt zu erzeugen.

  4. IDebugExpressionContext2::ParseText erstellt ein IDebugExpression2 -Objekt und fügt das IDebugParsedExpression Objekt in das Objekt ein. Dieses IDebugExpression2 Objekt wird dann an Visual Studio zurückgegeben.

  5. Visual Studio ruft EvaluateSync auf, um den analysierten Ausdruck auszuwerten.

  6. IDebugExpression2::EvaluateSync übergibt den Aufruf von EvaluateSync , um die tatsächliche Auswertung zu ausführen und ein IDebugProperty2-Objekt zu erstellen, das an Visual Studio zurückgegeben wird.

  7. Visual Studio ruft GetPropertyInfo auf, um den Wert des Ausdrucks abzurufen, der dann in der Überwachungsliste angezeigt wird.

Parsen und anschließend auswerten

Da die Analyse eines komplexen Ausdrucks viel länger dauern kann als die Auswertung, wird der Prozess der Auswertung eines Ausdrucks in zwei Schritte unterteilt: 1) analysieren den Ausdruck und 2) bewerten den analysierten Ausdruck. Auf diese Weise kann die Auswertung mehrfach erfolgen, der Ausdruck muss jedoch nur einmal analysiert werden. Der zwischengeparste Ausdruck wird von der EE in einem IDebugParsedExpression-Objekt zurückgegeben, das wiederum von der DE als IDebugExpression2-Objekt gekapselt und zurückgegeben wird. Das IDebugExpression Objekt überträgt alle Auswertungen an das IDebugParsedExpression Objekt.

Hinweis

Es ist nicht erforderlich, dass ein EE diesen zweistufigen Prozess einhalten muss, obwohl Visual Studio davon ausgeht; der EE kann denselben Schritt analysieren und auswerten, wenn EvaluateSync aufgerufen wird (z. B. wie das MyCEE-Beispiel funktioniert). Wenn Ihre Sprache komplexe Ausdrücke bilden kann, sollten Sie den Analyseschritt vom Auswertungsschritt trennen. Dies kann die Leistung im Visual Studio-Debugger erhöhen, wenn viele Überwachungsausdrücke angezeigt werden.

In diesem Abschnitt

Die Beispielimplementierung der Ausdrucksauswertung verwendet das MyCEE-Beispiel, um den Prozess der Ausdrucksauswertung zu durchlaufen.

Die Auswertung eines Überwachungsausdrucks erklärt, was nach einer erfolgreichen Ausdrucksanalyse passiert.