Interfaces d’évaluateur d’expression clé
Important
Dans Visual Studio 2015, cette façon de mettre en œuvre les évaluateurs d’expressions est obsolète. Pour des informations sur la mise en œuvre des évaluateurs d’expressions CLR, veuillez consulter les pages les évaluateurs d’expression CLR et l’exemple d’évaluateur d’expression managée.
Lorsque vous écrivez un évaluateur d’expressions (EE), ainsi que le contexte d’évaluation, vous devriez vous familiariser avec les interfaces suivantes.
Descriptions des interfaces :
-
Dispose d’une méthode unique, GetAddress, qui récupère une structure de données représentant le point d’exécution actuel. Cette structure de données est l’un des trois arguments que le moteur de débogage (DE) transmet à la méthode EvaluateSync pour évaluer une expression. Cette interface est généralement implémentée par le fournisseur de symboles.
-
Dispose de la méthode Bind, qui récupère la zone mémoire contenant la valeur actuelle d’un symbole. En donnant à la fois la méthode contenant, représentée par un objet IDebugObject, et le symbole lui-même, représenté par un objet IDebugField,
IDebugBinder::Bind
retourne la valeur du symbole.IDebugBinder
est généralement implémentée par le DE. -
Représente un type de données simple. Pour des types plus complexes, tels que les tableaux et les méthodes, utilisez respectivement les interfaces dérivées IDebugArrayField et IDebugMethodField. IDebugContainerField est une autre interface dérivée importante qui représente les symboles contenant d’autres symboles, comme les méthodes ou les classes. L’interface
IDebugField
(et ses dérivés) est généralement implémentée par le fournisseur de symboles.Un objet
IDebugField
peut être utilisé pour rechercher le nom et le type d’un symbole et, avec un objet IDebugBinder, peut être utilisé pour rechercher sa valeur. -
Représente les bits réels de la valeur d’exécution d’un symbole. Bind prend un objet IDebugField, qui représente un symbole, et renvoie un objet IDebugObject. La méthode GetValue retourne la valeur du symbole dans un tampon mémoire. Un DE implémente généralement cette interface pour représenter la valeur d’une propriété en mémoire.
-
Cette interface représente l’évaluateur d’expressions lui-même. La méthode clé est Parse, qui renvoie une interface IDebugParsedExpression.
-
Cette interface représente une expression analysée prête à être évaluée. La méthode clé est EvaluateSync, qui renvoie une IDebugProperty2 représentant la valeur et le type de l’expression.
-
Cette interface représente une valeur et son type, et est le résultat d’une évaluation d’expression.