Évaluer les expressions

Les expressions sont créées à partir de chaînes transmises à partir des fenêtres Autos, Watch, QuickWatch ou Exécution. Lorsqu’une expression est évaluée, elle génère une chaîne imprimable qui contient le nom et le type de variable ou d’argument et sa valeur. Cette chaîne s’affiche dans la fenêtre IDE correspondante.

Implémentation

Les expressions sont évaluées lorsqu’un programme s’est arrêté à un point d’arrêt. L’expression elle-même est représentée par une interface IDebugExpression2 , qui représente une expression analysée prête pour la liaison et l’évaluation dans le contexte d’évaluation d’expression donné. Le frame de pile détermine le contexte d’évaluation d’expression, que le moteur de débogage (DE) fournit en implémentant l’interface IDebugExpressionContext2 .

Étant donné une chaîne utilisateur et une interface IDebugExpressionContext2, un moteur de débogage (DE) peut obtenir une interface IDebugExpression2 en passant la chaîne utilisateur à la méthode IDebugExpressionContext2 ::P arseText. L’interface IDebugExpression2 retournée contient l’expression analysée prête pour l’évaluation.

Avec l’interface IDebugExpression2 , le DE peut obtenir la valeur de l’expression via l’évaluation synchrone ou asynchrone de l’expression, à l’aide d’IDebugExpression2 ::EvaluateSync ou IDebugExpression2 ::EvaluateAsync. Cette valeur, ainsi que le nom et le type de la variable ou de l’argument, sont envoyées à l’IDE pour l’affichage. La valeur, le nom et le type sont représentés par une interface IDebugProperty2 .

Pour activer l’évaluation des expressions, un DE doit implémenter les interfaces IDebugExpression2 et IDebugExpressionContext2 . L’évaluation synchrone et asynchrone nécessite l’implémentation de la méthode IDebugProperty2 ::GetPropertyInfo .