Compartilhar via


Método IDebugHostEvaluator2::EvaluateExpression (dbgmodel.h)

O método EvaluateExpression permite que o host de depuração avalie uma expressão de linguagem (por exemplo: C++) e retorne o valor resultante dessa avaliação de expressão em caixa como um IModelObject. Essa variante específica do método permite apenas constructos de linguagem. Qualquer funcionalidade adicional apresentada no avaliador de expressão do host de depuração que não está presente no idioma (por exemplo: métodos de consulta LINQ) está desativada para a avaliação.

Como esse método usa apenas coisas que são definidas pela linguagem que está sendo depurada, esse método é portátil e seguro para usar do host para o host. Um host de depuração que implementa a depuração para um idioma específico deve avaliar uma expressão por meio desse método da mesma forma que qualquer outro host que depure o mesmo idioma. Dessa forma, esse é o método preferencial para fazer a avaliação de expressão.

Sintaxe

HRESULT EvaluateExpression(
  IDebugHostContext           *context,
  PCWSTR                      expression,
  IModelObject                *bindingContext,
  _COM_Errorptr_ IModelObject **result,
  IKeyStore                   **metadata
);

Parâmetros

context

O contexto do host no qual ocorre a avaliação da expressão. Se houver, por exemplo, leituras de memória do destino devido a desreferências de ponteiro, o espaço de endereço no qual essas leituras de memória são feitas é fornecido por esse argumento.

expression

A expressão de linguagem a ser avaliada. Essa cadeia de caracteres só pode conter uma expressão válida no idioma que está sendo depurado. Ele pode não conter nenhum constructo adicional que possa estar disponível no avaliador de expressão do host de depuração.

bindingContext

O contexto de associação no qual os nomes de símbolo (variável) serão pesquisados. Para C++, isso é semanticamente equivalente ao valor desse ponteiro.

result

O valor resultante da avaliação da expressão será retornado aqui.

metadata

Todos os metadados associados à expressão ou ao resultado são retornados aqui.

Retornar valor

Esse método retorna HRESULT que indica êxito ou falha.

Comentários

Exemplo de código

ComPtr<IDebugHost> spHost;   /* get the host */
ComPtr<IModelObject> spThis; /* get some object, an example here: some native 
                                object with fields m_intVal and m_intVal2 */

ComPtr<IDebugHostEvaluator2> spEval;
if (SUCCEEDED(spHost.As(&spEval)))
{
    ComPtr<IModelObject> spResult;
    ComPtr<IKeyStore> spMetadata;
    if (SUCCEEDED(spEval->EvaluateExpression(
        USE_CURRENT_HOST_CONTEXT, 
        L"m_intVal + this->m_intVal2", 
        spThis.Get(), 
        &spResult, 
        &spMetadata)))
    {
        // spResult will have the result of a language evaluation of 
        // "m_intVal + this->m_intVal2" where the name binding context 
        // (e.g.: *this* pointer) is spThis
        // spMetadata will have any additional metadata (e.g.: display radix, etc...)
    }
}

Requisitos

Requisito Valor
Cabeçalho dbgmodel.h

Confira também

Interface IDebugHostEvaluator2