Compartir a través de


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

El método EvaluateExpression permite que el host de depuración evalúe una expresión de lenguaje (por ejemplo, C++) y devuelva el valor resultante de esa evaluación de expresión boxing como IModelObject. Esta variante concreta del método solo permite construcciones de lenguaje. Cualquier funcionalidad adicional que se presente en el evaluador de expresiones del host de depuración que no esté presente en el lenguaje (por ejemplo: métodos de consulta LINQ) está desactivada para la evaluación.

Dado que este método solo usa elementos definidos por el lenguaje que se está depurando, este método es portátil y seguro de usar desde el host al host. Un host de depuración que implementa la depuración de un lenguaje determinado debe evaluar una expresión a través de este método de la misma manera que cualquier otro host que depure el mismo lenguaje. Por lo tanto, este es el método preferido para realizar la evaluación de expresiones.

Sintaxis

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

Parámetros

context

Contexto de host en el que se produce la evaluación de expresiones. Si hay, por ejemplo, lecturas de memoria del destino debido a desreferencias de punteros, el espacio de direcciones en el que se realizan esas lecturas de memoria se asigna mediante este argumento.

expression

Expresión de lenguaje que se va a evaluar. Esta cadena solo puede contener una expresión que sea válida en el lenguaje que se está depurando. Puede que no contenga construcciones adicionales que puedan estar disponibles en el evaluador de expresiones del host de depuración.

bindingContext

Contexto de enlace en el que se buscarán los nombres de símbolo (variable). Para C++, esto es semánticamente equivalente al valor de este puntero.

result

El valor resultante de la evaluación de expresiones se devolverá aquí.

metadata

Los metadatos asociados a la expresión o el resultado se devuelven aquí.

Valor devuelto

Este método devuelve HRESULT, que indica que se ha realizado correctamente o no.

Comentarios

Ejemplo 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
Header dbgmodel.h

Consulte también

Interfaz IDebugHostEvaluator2