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 boxeada como un 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 para su uso 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 idioma. 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 puntero, el espacio de direcciones en el que se realizan esas lecturas de memoria se da mediante este argumento.

expression

Expresión de lenguaje que se va a evaluar. Esta cadena solo puede contener una expresión válida en el lenguaje que se está depurando. Es posible que no contenga ninguna construcción adicional que pueda estar disponible 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.

Observaciones

de ejemplo de código de

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
encabezado de dbgmodel.h

Consulte también

interfaz IDebugHostEvaluator2