Implémentation de l'exemple les variables locales
Voici la façon dont Visual Studio obtient les données locales pour une méthode de l'évaluateur d'expression (EE) :
Visual Studio appelle IDebugStackFrame2 : : GetDebugProperty (DE) du moteur de débogage pour obtenir un objet d' IDebugProperty2 qui représente toutes les propriétés du frame de pile, y compris les variables locales.
IDebugStackFrame2::GetDebugProperty appelle IDebugExpressionEvaluator : : 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 classeur (IDebugBinder).
IDebugExpressionEvaluator::GetMethodProperty appelle IDebugSymbolProvider : : GetContainerField avec l'objet fourni d' IDebugAddress pour obtenir IDebugContainerField représentant la méthode qui contient l'adresse spécifiée.
l'interface d' IDebugContainerField est interrogée pour l'interface d' IDebugMethodField . Cette interface qui donne accès aux variables locales de la méthode.
IDebugExpressionEvaluator::GetMethodProperty instancie une classe ( CFieldProperty appelé dans l'exemple) qui implémente l'interface d' IDebugProperty2 pour représenter les données locales de la méthode. L'objet d' IDebugMethodField est placé dans cet objet d' CFieldProperty avec IDebugSymbolProvider, IDebugAddress et les objets d' IDebugBinder .
Lorsque l'objet d' CFieldProperty est initialisé, IDebugField : : GetInfo est appelé l'objet d' IDebugMethodField pour obtenir une structure de FIELD_INFORMATION qui contient toutes les informations accessibles sur la méthode elle-même.
IDebugExpressionEvaluator::GetMethodProperty retourne l'objet d' CFieldProperty comme un objet d' IDebugProperty2 .
Visual Studio appelle IDebugProperty2 : : EnumChildren sur l'objet retourné d' IDebugProperty2 avec le filtre guidFilterLocalsPlusArgs. Cela retourne un objet d' IEnumDebugPropertyInfo2 contenant les données locales de la méthode. Cette énumération est effectuée par les appels à IDebugMethodField : : EnumLocals et à IDebugMethodField : : EnumArguments.
Visual Studio appelle IEnumDebugPropertyInfo2 : : suivant pour obtenir une structure de DEBUG_PROPERTY_INFORMATION pour chaque compte local. Cette structure contient un pointeur vers une interface d' IDebugProperty2 pour les variables locales.
Visual Studio appelle IDebugProperty2 : : GetPropertyInfo pour chaque local obtiennent le nom local, pour l'valeur, puis tapez. Il s'agit d'informations qui s'affichent dans la fenêtre de Variables locales .
Dans cette section
implémenter GetMethodProperty
décrit une implémentation d' IDebugExpressionEvaluator : : GetMethodProperty.Énumérer des variables locales
Décrit comment le moteur de (DE) débogage effectue un appel pour énumérer des variables locales ou des arguments.Obtention de propriétés locales
Décrit comment le De effectue un appel pour obtenir le nom, le type, et la valeur d'un ou plusieurs variables locales.Obtention de valeurs locales
Discusses obtenant la valeur des variables locales, qui nécessitent des services d'un objet de classeur donné par le contexte d'évaluation.Évaluer les variables locales
Explique comment des variables locales sont évalués.
Rubriques connexes
contexte d'évaluation
Fournit les arguments passés lors De la appelle l'évaluateur d'expression (EE).MyCEE Sample
Présente une approche d'implémentation à créer un évaluateur d'expression du langage de MyC.