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 |
---|---|
Convertit une chaîne d'expression d'une expression analysée. |
|
obtient les variables locales, des arguments, et d'autres propriétés d'une méthode. |
|
Convertit un emplacement et un offset de méthode en une adresse mémoire. |
|
Détermine quel langage à utiliser pour créer des résultats imprimables. |
|
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 : : EvaluateSync
Programmes d'assistance du Kit de développement logiciel pour le débogage