Partager via


IDebugExpressionEvaluator

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’expression CLR, consultez l’exemple d’évaluateurs d’expression CLR et d’évaluateur d’expression managée.

Cette interface représente l’évaluateur d’expression.

Syntaxe

IDebugExpressionEvaluator : IUnknown

Remarques pour les 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 à l’aide CoCreateInstance de l’ID de classe (CLSID) de l’évaluateur. Consultez l’exemple.

Méthodes dans l'ordre Vtable

Le tableau suivant présente les méthodes de IDebugExpressionEvaluator.

Méthode Description
Analyser. Convertit une chaîne d’expression en expression analysée.
GetMethodProperty Obtient les variables locales, les arguments et d’autres propriétés d’une méthode.
GetMethodLocationProperty Convertit un emplacement de méthode et un décalage en adresse mémoire.
SetLocale Détermine la langue à utiliser pour créer des résultats imprimables.
SetRegistryRoot Définit la racine du Registre. Utilisé pour le débogage côte à côte.

Notes

Dans une situation classique, le moteur de débogage (DE) instancie l’évaluateur d’expression (EE) à la suite d’un appel à ParseText. Étant donné que le DE connaît la langue et le fournisseur de l’EE qu’il souhaite utiliser, le DE obtient le CLSID de l’EE à partir du Registre (les helpers du SDK pour la fonction débogage , GetEEMetricaide à cette récupération).

Une fois l’EE instancié, le DE appelle Analyse pour analyser l’expression et le stocker dans un objet IDebugParsedExpression . Plus tard, un appel à EvaluateSync évalue l’expression.

Spécifications

En-tête : ee.h

Espace de noms : Microsoft.VisualStudio.Debugger.Interop

Assembly : Microsoft.VisualStudio.Debugger.Interop.dll

Exemple

Cet exemple montre comment instancier l’évaluateur d’expression en fonction d’un fournisseur de symboles et d’une adresse dans le code source. Cet exemple utilise une fonction, GetEEMetricà partir des Helpers sdk pour la bibliothèque de 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