Partilhar via


IDebugExpressionEvaluator

Essa interface representa o avaliador da expressão.

IDebugExpressionEvaluator : IUnknown

Observações para Implementadores

O avaliador da expressão deve implementar essa interface.

Observações para chamadores

Para obter essa interface, instanciar o avaliador da expressão através do CoCreateInstance método usando a classe (CLSID) ID do avaliador. Consulte o exemplo.

Métodos na ordem de Vtable

A tabela a seguir mostra os métodos de IDebugExpressionEvaluator.

Método

Descrição

IDebugExpressionEvaluator::Parse

Converte uma seqüência de caracteres de expressão em uma expressão analisada.

IDebugExpressionEvaluator::GetMethodProperty

Obtém as variáveis locais, argumentos e outras propriedades de um método.

IDebugExpressionEvaluator::GetMethodLocationProperty

Converte um local de método e o deslocamento em um endereço de memória.

IDebugExpressionEvaluator::SetLocale

Determina qual idioma a ser usado para criar resultados de impressão.

IDebugExpressionEvaluator::SetRegistryRoot

Define a raiz do registro. Usado para depuração de 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 IDebugExpressionContext2::ParseText. Como o DE sabe o idioma e o fornecedor do EE ele deseja usar, o DE obtém o CLSID do EE do registro (o SDK auxiliares para depuração função, GetEEMetric, ajuda com a recuperação).

Após o EE é instanciado, o DE chama IDebugExpressionEvaluator::Parse analisar a expressão e armazená-lo em um IDebugParsedExpression objeto. Mais tarde, uma chamada para IDebugParsedExpression::EvaluateSync avalia a expressão.

Requisitos

Cabeçalho: ee.h

Namespace: Microsoft.VisualStudio.Debugger.Interop

Assembly: Microsoft.VisualStudio.Debugger.Interop.dll

Exemplo

Este exemplo mostra como instanciar o avaliador de expressão dado a um provedor de símbolo e um endereço no código fonte. Este exemplo usa uma função, GetEEMetric, da SDK auxiliares para depuração 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;
}

Consulte também

Referência

IDebugExpressionContext2::ParseText

IDebugParsedExpression

IDebugParsedExpression::EvaluateSync

SDK auxiliares para depuração

Conceitos

Interfaces de avaliação de expressão