Share via


Evaluación de una expresión de ventana de inspección

Importante

En Visual Studio 2015, esta forma de implementar evaluadores de expresiones está en desuso. Para obtener información sobre cómo implementar evaluadores de expresiones CLR, vea Evaluadores de expresiones CLR y Ejemplo de evaluador de expresiones administradas.

Cuando la ejecución se detiene, Visual Studio llama al motor de depuración (DE) para determinar el valor actual de cada expresión en su lista de reproducción. De evalúa cada expresión mediante un evaluador de expresiones (EE) y Visual Studio muestra su valor en la ventana Inspección .

A continuación se muestra información general sobre cómo se evalúa una expresión de lista de inspección:

  1. Visual Studio llama a GetExpressionContext del DE para obtener un contexto de expresión que se puede usar para evaluar expresiones.

  2. Para cada expresión de la lista de reproducción, Visual Studio llama a ParseText para convertir el texto de expresión en una expresión analizada.

  3. IDebugExpressionContext2::ParseText llama a Parse para realizar el trabajo real de analizar el texto y generar un objeto IDebugParsedExpression .

  4. IDebugExpressionContext2::ParseText crea un objeto IDebugExpression2 y coloca el IDebugParsedExpression objeto en él. A continuación, este objeto IDebugExpression2 se devuelve a Visual Studio.

  5. Visual Studio llama a EvaluateSync para evaluar la expresión analizada.

  6. IDebugExpression2::EvaluateSync pasa la llamada a EvaluateSync para realizar la evaluación real y genera un objeto IDebugProperty2 que se devuelve a Visual Studio.

  7. Visual Studio llama a GetPropertyInfo para obtener el valor de la expresión que se muestra en la lista de reproducción.

Análisis y evaluación

Dado que el análisis de una expresión compleja puede tardar mucho más tiempo que evaluarla, el proceso de evaluación de una expresión se divide en dos pasos: 1) analizar la expresión y 2) evaluar la expresión analizada. De este modo, la evaluación puede producirse muchas veces, pero la expresión debe analizarse solo una vez. La expresión analizada intermedia se devuelve de EE en un objeto IDebugParsedExpression que, a su vez, se encapsula y devuelve del DE como un objeto IDebugExpression2 . El IDebugExpression objeto aplaza toda la evaluación al IDebugParsedExpression objeto .

Nota:

No es necesario que una EE se ajuste a este proceso de dos pasos aunque Visual Studio asuma esto; la EE puede analizar y evaluar en el mismo paso cuando se llama a EvaluateSync (es decir, cómo funciona el ejemplo myCEE, por ejemplo). Si el lenguaje puede formar expresiones complejas, es posible que desee separar el paso de análisis del paso de evaluación. Esto puede aumentar el rendimiento en el depurador de Visual Studio cuando se muestran muchas expresiones de inspección.

En esta sección

Implementación de ejemplo de evaluación de expresiones Usa el ejemplo myCEE para recorrer paso a paso el proceso de evaluación de expresiones.

Evaluación de una expresión de inspección Explica lo que sucede después de analizar una expresión correcta.