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:

  1. El motor de depuración (DE) implementa la interfaz IDebugExpressionContext2.

  2. El paquete de depuración obtiene un objeto IDebugExpressionContext2 de una interfaz IDebugStackFrame2 y, a continuación, llama al método IDebugStackFrame2::ParseText que incluye para obtener un objeto IDebugExpression2.

  3. 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 a IDebugExpression2::EvaluateSync.

  4. 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).

Consulte también