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 managé.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 pour les implémenteursNotes for Implementers

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

Remarques pour les appelantsNotes for Callers

Pour obtenir cette interface, l’évaluateur d’expression par le biais d’instancier le 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, arguments et 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 (DE) 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 connaît la langue et le fournisseur de l’il souhaite utiliser Java EE, le D’obtient CLSID du EE à partir du Registre (la programmes d’assistance du Kit de développement logiciel 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 le EE est instancié, le D’appelle analyser pour analyser l’expression et les 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. Une version ultérieure, un appel à EvaluateSync évalue l’expression.Later, a call to EvaluateSync evaluates the expression.

SpécificationsRequirements

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

Namespace : 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 donné d’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 programmes d’assistance du Kit de développement logiciel 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

Interfaces de l’évaluation d’expression Expression Evaluation Interfaces
ParseText ParseText
IDebugParsedExpression IDebugParsedExpression
EvaluateSync EvaluateSync
Aides SDK pour le débogageSDK Helpers for Debugging