IDebugExpressionEvaluator
Importante
No Visual Studio 2015, essa maneira de implementar avaliadores de expressão foi preterida. Para obter informações sobre como implementar avaliadores de expressão CLR, consulte Avaliadores de expressão CLR e Amostra de avaliador de expressão gerenciada.
Essa interface representa o avaliador da expressão.
Sintaxe
IDebugExpressionEvaluator : IUnknown
Notas para implementadores
O avaliador de expressão deve implementar essa interface.
Observações para chamadores
Para obter essa interface, instancie o avaliador de expressão por meio do CoCreateInstance
método usando o ID de classe (CLSID) do avaliador. Veja o exemplo.
Métodos na ordem VTable
A tabela a seguir mostra os métodos de IDebugExpressionEvaluator
.
Método | Descrição |
---|---|
Analisar | Converte uma cadeia de caracteres de expressão em uma expressão analisada. |
GetMethodProperty | Obtém as variáveis locais, argumentos e outras propriedades de um método. |
GetMethodLocationProperty | Converte um local de método e deslocamento em um endereço de memória. |
SetLocale | Determina qual idioma usar para criar resultados imprimíveis. |
SetRegistryRoot | Define a raiz do Registro. Usado para depuração lado a lado. |
Comentários
Em uma situação típica, o mecanismo de depuração (DE) instancia o avaliador de expressão (EE) como resultado de uma chamada para ParseText. Como o DE conhece o idioma e o fornecedor do EE que deseja usar, o DE obtém o CLSID do EE do registro (a função SDK Helpers for Debugging , , GetEEMetric
ajuda nessa recuperação).
Depois que o EE é instanciado, o DE chama Parse para analisar a expressão e armazená-la em um objeto IDebugParsedExpression. Posteriormente, uma chamada para EvaluateSync avalia a expressão.
Requisitos
Cabeçalho: ee.h
Espaço para nome: Microsoft.VisualStudio.Debugger.Interop
Assembly: Microsoft.VisualStudio.Debugger.Interop.dll
Exemplo
Este exemplo mostra como instanciar o avaliador de expressão dado um provedor de símbolo e um endereço no código-fonte. Este exemplo usa uma função, , da biblioteca SDK Helpers for Debugging, GetEEMetric
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;
}