Partager via


IDebugExpressionEvaluator

cette interface représente l'évaluateur d'expression.

IDebugExpressionEvaluator : IUnknown

Remarques à l'intention des implémenteurs

l'évaluateur d'expression doit implémenter cette interface.

Remarques pour les appelants

Pour obtenir cette interface, instanciez l'évaluateur d'expression via la méthode d' CoCreateInstance à l'aide de l'ID de classe (CLSID) de l'évaluateur. Consultez l'exemple.

méthodes en commande de Vtable

Le tableau suivant répertorie les méthodes d' IDebugExpressionEvaluator.

Méthode

Description

IDebugExpressionEvaluator : : analysez

Convertit une chaîne d'expression d'une expression analysée.

IDebugExpressionEvaluator : : GetMethodProperty

obtient les variables locales, des arguments, et d'autres propriétés d'une méthode.

IDebugExpressionEvaluator : : GetMethodLocationProperty

Convertit un emplacement et un offset de méthode en une adresse mémoire.

IDebugExpressionEvaluator : : SetLocale

Détermine quel langage à utiliser pour créer des résultats imprimables.

IDebugExpressionEvaluator : : SetRegistryRoot

définit la racine de Registre. utilisé pour déboguer côte à côte.

Notes

Dans une situation courante, le moteur de débogage (DE) instancie l'évaluateur d'expression (EE) à la suite d'un appel à IDebugExpressionContext2 : : ParseText. Étant donné que le De connaît le langage et fournisseur de l'évaluateur d'expression qu'il souhaite utiliser, le De obtient le CLSID de l'évaluateur d'expression du Registre (la fonction de Programmes d'assistance du Kit de développement logiciel pour le débogage , GetEEMetric, permet à cette récupération).

Une fois l'évaluateur d'expression soit instanciée, le De appelle IDebugExpressionEvaluator : : analysez pour analyser l'expression et le stocker dans un objet d' IDebugParsedExpression . Ultérieurement, un appel à IDebugParsedExpression : : EvaluateSync évalue l'expression.

Configuration requise

en-tête : ee.h

l'espace de noms : Microsoft.VisualStudio.Debugger.Interop

Assembly : Microsoft.VisualStudio.Debugger.Interop.dll

Exemple

Cet exemple montre comment instancier l'évaluateur d'expression donné un fournisseur de symbole et une adresse dans le code source. cet exemple utilise une fonction, GetEEMetric, de la bibliothèque de Programmes d'assistance du Kit de développement logiciel pour le débogage , dbgmetric.lib.

IDebugExpressionEvaluator GetExpressionEvaluator(IDebugSymbolProvider pSymbolProvider,
                                                 IDebugAddress *pSourceAddress)
{
    // This is typically defined globally but is specified here just
    // for this example.
    static const WCHAR strRegistrationRoot[] = L"Software\\Microsoft\\VisualStudio\\8.0Exp";

    IDebugExpressionEvaluator *pEE = NULL;
    if (pSymbolProvider != NULL && pSourceAddress != NULL) {
        HRESULT hr         = S_OK;
        GUID  languageGuid = { 0 };
        GUID  vendorGuid   = { 0 };

        hr = pSymbolProvider->GetLanguage(pSourceAddress,
                                          &languageGuid,
                                          &vendorGuid);
        if (SUCCEEDED(hr)) {
            CLSID clsidEE      = { 0 };
            CComPtr<IDebugExpressionEvaluator> spExpressionEvaluator;
            // Get the expression evaluator's CLSID from the registry.
            ::GetEEMetric(languageGuid,
                          vendorGuid,
                          metricCLSID,
                          &clsidEE,
                          strRegistrationRoot);
            if (!IsEqualGUID(clsidEE,GUID_NULL)) {
                // Instantiate the expression evaluator.
                spExpressionEvaluator.CoCreateInstance(clsidEE);
            }
            if (spExpressionEvaluator != NULL) {
                pEE = spExpressionEvaluator.Detach();
            }
        }
    }
    return pEE;
}

Voir aussi

Référence

IDebugExpressionContext2 : : ParseText

IDebugParsedExpression

IDebugParsedExpression : : EvaluateSync

Programmes d'assistance du Kit de développement logiciel pour le débogage

Concepts

interfaces d'évaluation de l'expression