Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
En Visual Studio 2015, esta forma de implementar evaluadores de expresiones está en desuso. Para obtener información sobre la implementación de evaluadores de expresiones CLR, consulte 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 vigilancia. 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 una visión general sobre cómo se evalúa una expresión de lista de vigilancia:
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::ParseTextllama a Parse para realizar el trabajo real de analizar el texto y generar un objeto IDebugParsedExpression .IDebugExpressionContext2::ParseTextcrea un objeto IDebugExpression2 y coloca elIDebugParsedExpressionobjeto en él. A continuación, esteIDebugExpression2objeto se devuelve a Visual Studio.Visual Studio llama a EvaluateSync para evaluar la expresión analizada.
IDebugExpression2::EvaluateSyncpasa 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 siga este proceso de dos pasos, aunque Visual Studio asuma esto; la EE puede analizar y evaluar en el mismo paso cuando se invoca EvaluateSync (así es como funciona el ejemplo MyCEE). 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
La 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.
La evaluación de una expresión de observación explica lo que sucede después de analizar con éxito una expresión.
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).