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.
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:
Visual Studio ruft den GetExpressionContext der DE auf, um einen Ausdruckskontext abzurufen, der zum Auswerten von Ausdrücken verwendet werden kann.
Für jeden Ausdruck in der Überwachungsliste ruft Visual Studio ParseText auf, um den Ausdruckstext in einen analysierten Ausdruck zu konvertieren.
IDebugExpressionContext2::ParseTextruft Parse auf, um die eigentliche Arbeit der Analyse des Texts zu erledigen und ein IDebugParsedExpression -Objekt zu erzeugen.IDebugExpressionContext2::ParseTexterstellt ein IDebugExpression2 -Objekt und fügt dasIDebugParsedExpressionObjekt in das Objekt ein. DiesesIDebugExpression2Objekt wird dann an Visual Studio zurückgegeben.Visual Studio ruft EvaluateSync auf, um den analysierten Ausdruck auszuwerten.
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.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.
Verwandte Inhalte
Der Auswertungskontext stellt die Argumente bereit, die übergeben werden, wenn das Debugmodul (DE) den Ausdrucksauswert (EE) aufruft.