Evaluar expresiones

Las expresiones se crean a partir de cadenas que se pasan desde las ventanas Automático, Inspección, Inspección rápida o Inmediato . Cuando se evalúa una expresión, genera una cadena imprimible que contiene el nombre y el tipo de variable o argumento y su valor. Esta cadena se muestra en la ventana del IDE correspondiente.

Implementación

Las expresiones se evalúan cuando un programa se ha detenido en un punto de interrupción. La propia expresión se representa mediante una interfaz IDebugExpression2 , que representa una expresión analizada que está lista para el enlace y la evaluación dentro del contexto de evaluación de expresiones especificado. El marco de pila determina el contexto de evaluación de expresiones, que el motor de depuración (DE) proporciona mediante la implementación de la interfaz IDebugExpressionContext2 .

Dada una cadena de usuario y una interfaz IDebugExpressionContext2, un motor de depuración (DE) puede obtener una interfaz IDebugExpression2 pasando la cadena de usuario al método IDebugExpressionContext2::P arseText. La interfaz IDebugExpression2 que se devuelve contiene la expresión analizada lista para su evaluación.

Con la IDebugExpression2 interfaz , el DE puede obtener el valor de la expresión a través de la evaluación de expresiones sincrónicas o asincrónicas mediante IDebugExpression2::EvaluateSync o IDebugExpression2::EvaluateAsync. Este valor, junto con el nombre y el tipo de la variable o argumento, se envía al IDE para su presentación. El valor, el nombre y el tipo se representan mediante una interfaz IDebugProperty2 .

Para habilitar la evaluación de expresiones, un DE debe implementar las interfaces IDebugExpression2 e IDebugExpressionContext2 . Tanto la evaluación sincrónica como asincrónica requieren la implementación del método IDebugProperty2::GetPropertyInfo .