Exemple d’implémentation de variables locales
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’expressions CLR, consultez évaluateurs d’expression CLR et exemple d’évaluateur d’expression managée.
Voici une vue d’ensemble de la façon dont Visual Studio obtient les variables locales d’une méthode à partir de l’évaluateur d’expression (EE) :
Visual Studio appelle le moteur de débogage (DE) GetDebugProperty pour obtenir un objet IDebugProperty2 qui représente toutes les propriétés de la pile d'appels, y compris les variables locales.
IDebugStackFrame2::GetDebugProperty
appelle GetMethodProperty pour obtenir un objet qui décrit la méthode dans laquelle le point d’arrêt s’est produit. Le DE fournit un fournisseur de symboles (IDebugSymbolProvider), une adresse (IDebugAddress) et un binder (IDebugBinder).IDebugExpressionEvaluator::GetMethodProperty
appelle GetContainerField avec l’objetIDebugAddress
fourni pour obtenir un IDebugContainerField qui représente la méthode contenant l’adresse spécifiée.L’interface
IDebugContainerField
est interrogée pour l’interface IDebugMethodField. Cette interface donne accès aux variables locales de la méthode.IDebugExpressionEvaluator::GetMethodProperty
instancie une classe (appeléeCFieldProperty
dans l’exemple) qui exécute l’interfaceIDebugProperty2
pour représenter les locaux de la méthode. L’objetIDebugMethodField
est placé dans cet objetCFieldProperty
ainsi que les objetsIDebugSymbolProvider
,IDebugAddress
etIDebugBinder
.Lorsque l’objet
CFieldProperty
est initialisé, GetInfo est appelé sur l’objetIDebugMethodField
pour obtenir une structure FIELD_INFO qui contient toutes les informations affichables sur la méthode elle-même.IDebugExpressionEvaluator::GetMethodProperty
retourne l’objetCFieldProperty
en tant qu’objetIDebugProperty2
.Visual Studio appelle EnumChildren sur l’objet
IDebugProperty2
retourné avec le filtreguidFilterLocalsPlusArgs
, qui retourne un objet IEnumDebugPropertyInfo2 contenant les variables locales de la méthode. Cette énumération est renseignée par des appels à EnumLocals et EnumArguments.Visual Studio appelle Next pour obtenir une structure DEBUG_PROPERTY_INFO pour chaque variable locale. Cette structure contient un pointeur vers une interface
IDebugProperty2
pour un local.Visual Studio appelle GetPropertyInfo pour chaque local afin d’obtenir le nom, la valeur et le type du local. Ces informations s’affichent dans la fenêtre Locals.
Dans cette section
Mettre en œuvre GetMethodProperty décrit une implémentation de GetMethodProperty.
Énumérer les variables locales décrit comment le moteur de débogage (DE) effectue un appel pour énumérer des variables ou des arguments locaux.
Obtenir des propriétés locales décrit comment le DE appelle pour obtenir le nom, le type et la valeur d'une ou plusieurs variables locales.
Obtenir des valeurs locales décrit l’obtention de la valeur locale, ce qui nécessite les services d’un objet binder donné par le contexte d’évaluation.
Évaluer les locaux explique comment les variables locales sont évaluées.
Sections connexes
Le contexte d’évaluation fournit les arguments qui sont passés lorsque le DE appelle l’évaluateur d’expressions (EE).
exemple MyCEE illustre une approche d’implémentation pour créer un évaluateur d’expression pour le langage MyC.