Partager via


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) :

  1. 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.

  2. 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).

  3. 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.

  4. 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.

  5. 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 .

  6. 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.

  7. IDebugExpressionEvaluator::GetMethodProperty retourne l'objet d' CFieldProperty comme un objet d' IDebugProperty2 .

  8. 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.

  9. 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.

  10. 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

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.

Voir aussi

Autres ressources

Afficher les variables locales