Compartir a través de


Evaluación de una expresión de la ventana 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. El 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 la lista de reproducción:

  1. Visual Studio llama a GetExpressionContext del DE para obtener un contexto de expresión que se pueda 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 objeto IDebugParsedExpression en él. 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.

Primero analizar y después evaluar

Dado que el análisis de una expresión compleja puede tardar mucho más tiempo que su evaluación, 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 del EE en un objeto IDebugParsedExpression que, a su vez, se encapsula y se devuelve del DE como un objeto IDebugExpression2. El objeto IDebugExpression difiere toda evaluación al objeto IDebugParsedExpression.

Nota:

No es necesario que un EE siga este proceso de dos pasos aunque Visual Studio asuma esto; el EE puede analizar y evaluar en el mismo paso cuando se llama a EvaluateSync (es decir, cómo funciona la muestra MyCEE, por ejemplo). Si el lenguaje puede formar expresiones complejas, puede interesarle 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 la 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.