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 |