Exemple d’implémentation des variables localesSample Implementation of Locals

Important

Dans Visual Studio 2015, ce moyen d’implémenter des évaluateurs d’expression est déconseillée.In Visual Studio 2015, this way of implementing expression evaluators is deprecated. Pour plus d’informations sur l’implémentation des évaluateurs d’expression CLR, consultez évaluateurs d’Expression CLR et exemple d’évaluateur d’Expression managé.For information about implementing CLR expression evaluators, please see CLR Expression Evaluators and Managed Expression Evaluator Sample.

Voici une vue d’ensemble de la façon dont Visual Studio obtient les variables locales pour une méthode à partir de l’évaluateur d’expression (EE) :Here is an overview of how Visual Studio obtains the locals for a method from the expression evaluator (EE):

  1. Visual Studio appelle le moteur de débogage (Allemagne) GetDebugProperty pour obtenir un IDebugProperty2 objet qui représente toutes les propriétés du frame de pile, y compris les variables locales.Visual Studio calls the debug engine's (DE) GetDebugProperty to get an IDebugProperty2 object that represents all the properties of the stack frame, including the locals.

  2. IDebugStackFrame2::GetDebugProperty appels GetMethodProperty pour obtenir un objet qui décrit la méthode dans laquelle le point d’arrêt s’est produite.IDebugStackFrame2::GetDebugProperty calls GetMethodProperty to obtain an object that describes the method within which the breakpoint occurred. Le DE fournit un fournisseur de symboles (IDebugSymbolProvider), une adresse (IDebugAddress) et un classeur (IDebugBinder).The DE supplies a symbol provider (IDebugSymbolProvider), an address (IDebugAddress), and a binder (IDebugBinder).

  3. IDebugExpressionEvaluator::GetMethodProperty appels GetContainerField avec fourni IDebugAddress objet à obtenir un IDebugContainerField représentant la méthode qui contient l’adresse spécifiée.IDebugExpressionEvaluator::GetMethodProperty calls GetContainerField with the supplied IDebugAddress object to get an IDebugContainerField representing the method containing the specified address.

  4. Le IDebugContainerField interface est interrogé pour déterminer le IDebugMethodField interface.The IDebugContainerField interface is queried for the IDebugMethodField interface. Il est cette interface permet d’accéder aux variables locales de la méthode.It is this interface that gives access to the method's locals.

  5. IDebugExpressionEvaluator::GetMethodProperty instancie une classe (appelée CFieldProperty dans l’exemple) qui implémente le IDebugProperty2 interface pour représenter les variables locales de la méthode.IDebugExpressionEvaluator::GetMethodProperty instantiates a class (called CFieldProperty in the sample) that implements the IDebugProperty2 interface to represent the method's locals. Le IDebugMethodField objet est placé dans cette CFieldProperty de l’objet avec la IDebugSymbolProvider, IDebugAddress et IDebugBinder objets.The IDebugMethodField object is placed in this CFieldProperty object along with the IDebugSymbolProvider, IDebugAddress and IDebugBinder objects.

  6. Lorsque le CFieldProperty objet est initialisé, GetInfo est appelée sur le IDebugMethodField pour obtenir un FIELD_INFO structure qui contient toutes les informations peut être affichées sur la méthode elle-même .When the CFieldProperty object is initialized, GetInfo is called on the IDebugMethodField object to obtain a FIELD_INFO structure that contains all displayable information about the method itself.

  7. IDebugExpressionEvaluator::GetMethodProperty Retourne le CFieldProperty de l’objet en un IDebugProperty2 objet.IDebugExpressionEvaluator::GetMethodProperty returns the CFieldProperty object as an IDebugProperty2 object.

  8. Appels de Visual Studio EnumChildren sur retourné IDebugProperty2 objet avec le filtre guidFilterLocalsPlusArgs.Visual Studio calls EnumChildren on the returned IDebugProperty2 object with the filter guidFilterLocalsPlusArgs. Cette opération retourne un IEnumDebugPropertyInfo2 objet contenant des variables locales de la méthode.This returns an IEnumDebugPropertyInfo2 object containing the method's locals. Cette énumération est renseignée par les appels à EnumLocals et EnumArguments.This enumeration is filled in by calls to EnumLocals and EnumArguments.

  9. Appels de Visual Studio suivant pour obtenir un DEBUG_PROPERTY_INFO structure pour chaque local.Visual Studio calls Next to obtain a DEBUG_PROPERTY_INFO structure for each local. Cette structure contient un pointeur vers un IDebugProperty2 interface pour une variable locale.This structure contains a pointer to an IDebugProperty2 interface for a local.

  10. Appels de Visual Studio GetPropertyInfo pour chaque local obtenir le nom de l’ordinateur local, valeur et type.Visual Studio calls GetPropertyInfo for each local to obtain the local's name, value, and type. Ce sont les informations qui s’affiche dans le variables locales fenêtre.This is the information that is displayed in the Locals window.

Dans cette sectionIn This Section

Implémentation de GetMethodPropertyImplementing GetMethodProperty
Décrit une implémentation de GetMethodProperty.Describes an implementation of GetMethodProperty.

Énumération de variables localesEnumerating Locals
Explique comment le moteur de débogage (DE) permet à un appel à énumérer les variables locales ou les arguments.Describes how the debug engine (DE) makes a call to enumerate local variables or arguments.

Obtention des propriétés localesGetting Local Properties
Décrit comment le D’effectue un appel pour obtenir le nom, le type et la valeur des variables locales d’un ou plusieurs.Describes how the DE makes a call to get the name, type, and value of one or more locals.

Obtention des valeurs localesGetting Local Values
Décrit l’obtention de la valeur de la variable locale, ce qui nécessite les services d’un objet de classeur fourni par le contexte d’évaluation.Discusses obtaining the value of the local, which requires the services of a binder object given by the evaluation context.

Évaluation des variables localesEvaluating Locals
Explique comment les variables locales sont évaluées.Explains how locals are evaluated.

Contexte d’évaluationEvaluation Context
Fournit les arguments qui sont passées au moment de la D’appelle l’évaluateur d’expression (EE).Provides the arguments that are passed when the DE calls the expression evaluator (EE).

Exemple de MyCEEMyCEE Sample
Illustre une approche d’implémentation à la création d’un évaluateur d’expression pour la langue MyC.Demonstrates one implementation approach to creating an expression evaluator for the MyC language.

Voir aussiSee Also

Affichage des variables localesDisplaying Locals