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 , GetEEMetric
aide à 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;
}