IDebugExpressionEvaluator

Importante

no Visual Studio 2015, essa maneira de implementar avaliadores de expressão é preterida. Para obter informações sobre como implementar avaliadores de expressão CLR, consulte os avaliadores de expressão CLR e exemplo de avaliador de expressão gerenciada.

Essa interface representa o avaliador de expressão.

Syntax

IDebugExpressionEvaluator : IUnknown

Notas para implementadores

O avaliador de expressão deve implementar essa interface.

Observações para chamadores

Para obter essa interface, crie uma instância do avaliador de expressão por meio do CoCreateInstance método usando a ID de classe (CLSID) do avaliador. Consulte o exemplo.

Métodos em 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, os argumentos e outras propriedades de um método.
GetMethodLocationProperty Converte um local de método e um 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) cria uma instância do 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 (os auxiliares do SDK para a função de depuração , GetEEMetric , ajuda com essa 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

Namespace: Microsoft. VisualStudio. Debugger. Interop

Assembly: Microsoft.VisualStudio.Debugger.Interop.dll

Exemplo

Este exemplo mostra como criar uma instância do avaliador de expressão, dado um provedor de símbolos e um endereço no código-fonte. Este exemplo usa uma função, GetEEMetric , dos auxiliares do SDK para depurar a biblioteca, 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;
}

Confira também