Compartir a través de


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

El método EvaluateExtendedExpression es similar al método EvaluateExpression, salvo que vuelve a activar la funcionalidad adicional que no es de lenguaje que un host de depuración determinado elige agregar a su evaluador de expresiones. En herramientas de depuración para Windows, por ejemplo, esto habilita tipos anónimos, consultas LINQ, calificadores de módulo, especificadores de formato y otras funciones que no son de C/C++.

Es importante tener en cuenta que no hay ninguna garantía de que una expresión que se evalúe en un host a través de EvaluateExtendedExpression se evaluará correctamente con otro host que depura el mismo lenguaje. Las extensiones del evaluador de expresiones son el purview de un host determinado. Se recomienda encarecidamente que los clientes utilicen el método EvaluateExpression en lugar del método EvaluateExtendedExpression por este motivo exacto. El uso de este método reduce la portabilidad del autor de la llamada.

Sintaxis

HRESULT EvaluateExtendedExpression(
  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 que se va a evaluar. Esto puede usar extensiones privadas de host para la sintaxis del lenguaje.

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<IDebugHostEvaluator2> spEval;
if (SUCCEEDED(spHost.As(&spEval)))
{
    ComPtr<IModelObject> spNotepadProcesses;

    // We can use any syntax that's private to the host (not only 
    // language syntax).  This is not necessarily portable from host to host
    if (SUCCEEDED(spEval->EvaluateExtendedExpression(
        USE_CURRENT_HOST_CONTEXT, 
        L"@$cursession->Processes.Where(p => p.Name == \"notepad.exe\")", 
        nullptr, 
        &spNotepadProcesses, 
        nullptr)))
    {
        // spNotepadProcesses will contain a collection of every process 
        // named (exactly) "notepad.exe".  Such can be iterated with IIterableConcept.
    }
}

Requisitos

Requisito Valor
Header dbgmodel.h

Consulte también

Interfaz IDebugHostEvaluator2