Evaluador de expresiones
Los evaluadores de expresiones (EE) examinan la sintaxis de un lenguaje para analizar y evaluar variables y expresiones en tiempo de ejecución, para que el usuario pueda verlas cuando el IDE esté en modo de interrupción.
Uso de evaluadores de expresiones
Las expresiones se crean mediante el método ParseText, como se indica a continuación:
El motor de depuración (DE) implementa la interfaz IDebugExpressionContext2.
El paquete de depuración obtiene un objeto
IDebugExpressionContext2
de una interfaz IDebugStackFrame2 y, a continuación, llama al métodoIDebugStackFrame2::ParseText
que incluye para obtener un objeto IDebugExpression2.El paquete de depuración llama al método EvaluateSync o al método EvaluateAsync para obtener el valor de la expresión.
IDebugExpression2::EvaluateAsync
se llama desde la ventana Comando/Inmediato. Todos los demás componentes de la interfaz de usuario llaman aIDebugExpression2::EvaluateSync
.El resultado de la evaluación de expresiones es un objeto IDebugProperty2, que contiene el nombre, el tipo y el valor del resultado de la evaluación de expresiones.
Durante la evaluación de expresiones, el EE requiere información del componente de proveedor de símbolos. El proveedor de símbolos proporciona la información simbólica utilizada para identificar y comprender la expresión analizada.
Cuando se completa la evaluación de expresiones asincrónicas, el DE envía un evento asincrónico a través del administrador de depuración de sesión (SDM) para notificar al IDE que se ha completado la evaluación de expresiones. A continuación, el resultado de la evaluación se devuelve de la llamada al método
IDebugExpression2::EvaluateSync
.
Notas de implementación
Los motores de depuración de Visual Studio esperan comunicarse con el evaluador de expresiones mediante interfaces de Common Language Runtime (CLR). Como resultado, un evaluador de expresiones que funciona con los motores de depuración de Visual Studio debe admitir CLR (se puede encontrar una lista completa de todas las interfaces de depuración de CLR en debugref.doc, que forma parte del Kit de desarrollo de software (SDK) de Windows).