Architecture évaluateur d'expression
Intégrer un langage propriétaire au package de débogage Visual Studio signifie implémentation des interfaces requises (EE) évaluateur d'expression et appeler les interfaces de fournisseur et (SP) de classeur de symboles du common langage runtime. SP et les objets de classeur, avec l'adresse actuelle d'exécution, sont le contexte dans lequel les expressions sont évaluées. Les informations que ces interfaces produisent et consomment représentent les concepts clés dans l'architecture de l'évaluateur d'expression.
Vue d'ensemble
analyser l'expression
Lorsque vous déboguez un programme, les expressions sont évaluées pour plusieurs raisons mais toujours dans lequel le programme débogué a été arrêté par un point d'arrêt (un point d'arrêt placé par l'utilisateur ou un incident une exception). Il se produit à ce moment où Visual Studio obtient un frame de pile, comme représenté par l'interface d' IDebugStackFrame2 , le moteur de (DE) débogage. Visual Studio appelle ensuite IDebugStackFrame2 : : GetExpressionContext pour obtenir l'interface d' IDebugExpressionContext2 . Cette interface représente un contexte dans lequel les expressions peuvent être évaluées ; IDebugExpressionContext2 : : ParseText est le point d'entrée à l'évaluation. Le haut jusqu'à présent, toutes les interfaces sont implémentées par le De.
Lorsque IDebugExpressionContext2::ParseText est appelé, le De instancie l'évaluateur d'expression associée au langage du fichier source où le point d'arrêt s'est produit (le De instancie également le SH à ce stade). L'évaluateur d'expression est représentée par l'interface d' IDebugExpressionEvaluator . Le De appelle ensuite IDebugExpressionEvaluator : : analysez pour convertir l'expression (sous forme de texte) à une expression analysée, prête pour l'évaluation. cette expression analysée est représentée par l'interface d' IDebugParsedExpression . Notez que l'expression est généralement analysée et à ce stade pas évaluée.
Le du crée un objet qui implémente l'interface d' IDebugExpression2 , met l'objet d' IDebugParsedExpression dans l'objet de IDebugExpression2 , et retourne l'objet d' IDebugExpression2 d' IDebugExpressionContext2::ParseText.
évaluer l'expression
Visual Studio appelle IDebugExpression2 : : EvaluateSync ou IDebugExpression2 : : EvaluateAsync pour évaluer l'expression analysée. Appel IDebugParsedExpression : : EvaluateSync des deux méthodes (IDebugExpression2::EvaluateSync appelle la méthode immédiatement, tandis que IDebugExpression2::EvaluateAsync appelle la méthode via un thread d'arrière-plan) pour évaluer l'expression analysée et retourner une interface d' IDebugProperty2 qui représente la valeur et le type de l'expression analysée. IDebugParsedExpression::EvaluateSync utilise le SH, l'adresse et le classeur fournis pour convertir l'expression convertie en une valeur réelle, représentée par l'interface d' IDebugProperty2 .
par exemple
Une fois un point d'arrêt soit atteint dans un programme en cours de exécution, l'utilisateur choisit d'afficher une variable dans la boîte de dialogue d' Espion express . Cette boîte de dialogue affiche le nom de variable, sa valeur, et son type. L'utilisateur peut généralement modifier la valeur.
Lorsque la boîte de dialogue de Espion express est affichée, le nom de la variable qui est examinée est envoyé en tant que texte à IDebugExpressionContext2 : : ParseText. Cela retourne un objet d' IDebugExpression2 représentant l'expression analysée, dans ce cas, la variable. IDebugExpression2 : : EvaluateSync est ensuite appelé pour produire un objet d' IDebugProperty2 qui représente la valeur et le type de variable, ainsi que son nom. Il s'agit de ces informations affichées.
Si l'utilisateur modifie la valeur de variable, IDebugProperty2 : : SetValueAsString est appelé avec la nouvelle valeur, qui modifie la valeur de la variable de la mémoire ce qui sera utilisé lorsque le programme continue à s'exécuter.
Consultez Afficher les variables locales pour plus d'informations sur ce processus d'afficher les valeurs des variables. Consultez Modifier la valeur des variables locales pour plus d'informations sur la façon dont une valeur de variable est modifiée.
Dans cette section
contexte d'évaluation
Fournit les arguments passés lors De la appelle l'évaluateur d'expression.Indexer les interfaces évaluateur d'expression
Décrit les interfaces sémantiques significatives nécessaires en écrivant l'évaluateur d'expression, ainsi que le contexte d'évaluation.
Voir aussi
Concepts
Modifier la valeur des variables locales