Método IDebugHostEvaluator::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<IDebugHostEvaluator> 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 |