Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Dans Visual Studio 2015, cette façon d’implémenter des évaluateurs d’expression est déconseillée. Pour plus d’informations sur l’implémentation d’évaluateurs d’expression CLR, consultez l’exemple d’évaluateur d’expression CLR et d’évaluateur d’expression managée.
Lorsque l’exécution s’interrompt, Visual Studio appelle le moteur de débogage (DE) pour déterminer la valeur actuelle de chaque expression dans sa liste de surveillance. Le DE évalue chaque expression à l’aide d’un évaluateur d’expression (EE) et Visual Studio affiche sa valeur dans la fenêtre Espion .
Voici une vue d’ensemble de la façon dont une expression de liste de surveillance est évaluée :
Visual Studio appelle getExpressionContext de DE pour obtenir un contexte d’expression qui peut être utilisé pour évaluer des expressions.
Pour chaque expression de la liste de surveillance, Visual Studio appelle ParseText pour convertir le texte de l’expression en expression analysée.
IDebugExpressionContext2::ParseTextappelle Parse pour effectuer le travail réel d’analyse du texte et produire un objet IDebugParsedExpression .IDebugExpressionContext2::ParseTextcrée un objet IDebugExpression2 et place l’objetIDebugParsedExpressiondans celui-ci. CetIDebugExpression2objet est ensuite retourné à Visual Studio.Visual Studio appelle EvaluateSync pour évaluer l’expression analysée.
IDebugExpression2::EvaluateSynctransmet l’appel à EvaluateSync pour effectuer l’évaluation réelle et produire un objet IDebugProperty2 retourné à Visual Studio.Visual Studio appelle GetPropertyInfo pour obtenir la valeur de l’expression qui est ensuite affichée dans la liste de surveillance.
Analyser puis évaluer
Étant donné que l’analyse d’une expression complexe peut prendre beaucoup plus de temps que de l’évaluer, le processus d’évaluation d’une expression est divisé en deux étapes : 1) analyser l’expression et 2) évaluer l’expression analysée. De cette façon, l’évaluation peut se produire plusieurs fois, mais l’expression doit être analysée une seule fois. L’expression analysée intermédiaire est retournée par l’EE dans un objet IDebugParsedExpression, qui est à son tour encapsulé et retourné par le DE en tant qu’objet IDebugExpression2. L’objet IDebugExpression reporte toutes les évaluations à l’objet IDebugParsedExpression .
Note
Il n’est pas nécessaire qu’un EE adhère à ce processus en deux étapes même si Visual Studio suppose cela ; L’EE peut analyser et évaluer à la même étape lorsque EvaluateSync est appelé (il s’agit de l’exemple MyCEE, par exemple). Si votre langage peut former des expressions complexes, vous pouvez séparer l’étape d’analyse de l’étape d’évaluation. Cela peut améliorer les performances dans le débogueur de Visual Studio lorsque de nombreuses expressions surveillées sont affichées.
Dans cette section
L’exemple d’implémentation de l’évaluation d’expression utilise l’exemple MyCEE pour parcourir le processus d’évaluation d’expression.
L’évaluation d’une expression de surveillance explique ce qui se passe après l’analyse d’une expression réussie.
Contenu connexe
Le contexte d’évaluation fournit les arguments passés lorsque le moteur de débogage appelle l’évaluateur d’expression (EE).