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:
Visual Studio llama a GetExpressionContext del DE para obtener un contexto de expresión que se puede usar para evaluar expresiones.
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.
IDebugExpressionContext2::ParseText
llama a Parse para realizar el trabajo real de analizar el texto y generar un objeto IDebugParsedExpression .IDebugExpressionContext2::ParseText
crea un objeto IDebugExpression2 y coloca elIDebugParsedExpression
objeto en él. A continuación, este objeto IDebugExpression2
se devuelve a Visual Studio.Visual Studio llama a EvaluateSync para evaluar la expresión analizada.
IDebugExpression2::EvaluateSync
pasa la llamada a EvaluateSync para realizar la evaluación real y genera un objeto IDebugProperty2 que se devuelve a Visual Studio.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.
Contenido relacionado
El contexto de evaluación proporciona los argumentos que se pasan cuando el motor de depuración (DE) llama al evaluador de expresiones (EE).