IDebugExpressionEvaluatorIDebugExpressionEvaluator

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 gérés.For information about implementing CLR expression evaluators, please see CLR Expression Evaluators and Managed Expression Evaluator Sample.

Cette interface représente l’évaluateur d’expression.This interface represents the expression evaluator.

SyntaxeSyntax

IDebugExpressionEvaluator : IUnknown

Notes de publication pour les implémenteursNotes for Implementers

L’évaluateur d’expression doit implémenter cette interface.The expression evaluator must implement this interface.

Notes de publication pour les appelantsNotes for Callers

Pour obtenir cette interface, instanciez l’évaluateur d’expression via la CoCreateInstance méthode à l’aide de l’ID de classe (CLSID) de l’évaluateur.To obtain this interface, instantiate the expression evaluator through the CoCreateInstance method by using the class ID (CLSID) of the evaluator. Consultez l’exemple.See the Example.

Méthodes dans l'ordre VtableMethods in Vtable Order

Le tableau suivant présente les méthodes de IDebugExpressionEvaluator.The following table shows the methods of IDebugExpressionEvaluator.

MéthodeMethod DescriptionDescription
AnalyserParse Convertit une chaîne d’expression en une expression analysée.Converts an expression string to a parsed expression.
GetMethodPropertyGetMethodProperty Obtient les variables locales, les arguments et les autres propriétés d’une méthode.Gets the local variables, arguments, and other properties of a method.
GetMethodLocationPropertyGetMethodLocationProperty Convertit un emplacement de la méthode et le décalage en une adresse mémoire.Converts a method location and offset into a memory address.
SetLocaleSetLocale Détermine la langue à utiliser pour créer des résultats imprimables.Determines which language to use to create printable results.
SetRegistryRootSetRegistryRoot Définit la racine du Registre.Sets the registry root. Utilisé pour le débogage côte à côte.Used for side-by-side debugging.

NotesRemarks

En général, le moteur de débogage (dé) instancie l’évaluateur d’expression (EE) suite à un appel à ParseText.In a typical situation, the debug engine (DE) instantiates the expression evaluator (EE) as a result of a call to ParseText. Car le DE sait que la langue et le fournisseur de l’il souhaite utiliser Java EE, l’Allemagne obtient CLSID du EE à partir du Registre (la aides SDK pour le débogage (fonction), GetEEMetric, permet de cette récupération).Because the DE knows the language and vendor of the EE it wants to use, the DE gets the EE's CLSID from the registry (the SDK Helpers for Debugging function, GetEEMetric, helps with this retrieval).

Une fois que le EE est instancié, l’Allemagne appelle analyser pour analyser l’expression et le stocker dans un IDebugParsedExpression objet.After the EE is instantiated, the DE calls Parse to parse the expression and store it in an IDebugParsedExpression object. Plus tard, un appel à EvaluateSync évalue l’expression.Later, a call to EvaluateSync evaluates the expression.

Configuration requiseRequirements

En-tête : ee.hHeader: ee.h

Espace de noms : Microsoft.VisualStudio.Debugger.InteropNamespace: Microsoft.VisualStudio.Debugger.Interop

Assembly : Microsoft.VisualStudio.Debugger.Interop.dllAssembly: Microsoft.VisualStudio.Debugger.Interop.dll

ExempleExample

Cet exemple montre comment instancier l’évaluateur d’expression étant donné un fournisseur de symboles et une adresse dans le code source.This example shows how to instantiate the expression evaluator given a symbol provider and an address in the source code. Cet exemple utilise une fonction, GetEEMetric, à partir de la aides SDK pour le débogage library, dbgmetric.lib.This example uses a function, GetEEMetric, from the SDK Helpers for Debugging library, 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 aussiSee also