Partager via


Évaluer une expression de la fenêtre Espion

Lorsque l'exécution s'interrompt, Visual Studio appelle le moteur de (DE) débogage pour déterminer la valeur actuelle de chaque expression dans sa liste de suivi. Le De évalue chaque expression à l'aide d'un (EE) évaluateur d'expression, et Visual Studio affiche sa valeur dans la fenêtre d' Espion .

Voici une vue d'ensemble de la façon dont une expression de liste de trace est évaluée :

  1. Visual Studio appelle IDebugStackFrame2 : : GetExpressionContext De pour obtenir un contexte d'expression qui peut être utilisé pour évaluer des expressions.

  2. Pour chaque expression dans la liste de suivi, Visual Studio appelle IDebugExpressionContext2 : : ParseText pour convertir le texte d'expression dans une expression est analysée.

  3. appels IDebugExpressionEvaluator : : analysez d'IDebugExpressionContext2::ParseText pour effectuer le travail réel d'analyser le texte et de produire un objet d' IDebugParsedExpression .

  4. IDebugExpressionContext2::ParseText crée un objet d' IDebugExpression2 et met l'objet d' IDebugParsedExpression dedans. Cela objet - IDebugExpression2 est ensuite retournée à Visual Studio.

  5. Visual Studio appelle IDebugExpression2 : : EvaluateSync pour évaluer l'expression analysée.

  6. IDebugExpression2::EvaluateSync passe l'appel à IDebugParsedExpression : : EvaluateSync pour que l'évaluation réelle et pour produire un objet d' IDebugProperty2 qui est retourné à Visual Studio.

  7. Visual Studio appelle IDebugProperty2 : : GetPropertyInfo pour obtenir la valeur de l'expression qui s'affiche dans la liste de suivi.

Analysez évaluent ensuite

Puisque analyser une expression complexe peut prendre beaucoup plus longue que l'évaluation, le processus d'évaluer une expression est divisé en deux étapes : 1) analysent l'expression et 2) évaluent l'expression analysée. De cette façon, évaluation peut se produire plusieurs fois mais l'expression doit être analysée une seule fois. L'expression analysées par intermédiaire est retournée d'évaluateur d'expression dans un objet d' IDebugParsedExpression qui est ensuite encapsulé et retourné par le De comme un objet d' IDebugExpression2 . l'objet d' IDebugExpression diffère toute l'évaluation à l'objet d' IDebugParsedExpression .

Notes

Il n'est pas nécessaire que l'évaluateur d'expression adhère à ce processus en deux étapes bien que Visual Studio a cela ; l'évaluateur d'expression peut analyser et évaluer dans la même étape lorsque IDebugParsedExpression : : EvaluateSync est appelé (voici comment l'exemple de MyCEE s'exécute, par exemple).Si votre langage peut constituer des expressions complexes, vous pouvez séparer l'étape d'analyser de l'étape d'évaluation.Cela peut augmenter les performances dans le débogueur Visual Studio lorsqu'un grand nombre d'expressions de contrôle sont affichées.

Dans cette section

Rubriques connexes

  • contexte d'évaluation
    Fournit les arguments passés lorsque le moteur de débogage (DE) appelle l'évaluateur d'expression (EE).

Voir aussi

Autres ressources

Écrire un évaluateur d'expression du common langage runtime