Motor de depuración
Un motor de depuración funciona con el intérprete o el sistema operativo para proporcionar servicios de depuración, como el control de ejecución, los puntos de interrupción y la evaluación de expresiones. El DE es responsable de supervisar el estado de un programa que se está depurando. Para ello, el DE usa todos los métodos disponibles en el entorno de ejecución admitido, ya sea desde la CPU o desde las API proporcionadas por el tiempo de ejecución.
Por ejemplo, Common Language Runtime (CLR) proporciona mecanismos para supervisar un programa en ejecución a través de las interfaces ICorDebugXXX. Un DE que admite CLR usa las interfaces ICorDebugXXX adecuadas para realizar un seguimiento de un programa de código administrado que se está depurando. A continuación, comunica los cambios de estado al administrador de depuración de sesión (SDM), que reenvía dicha información al IDE de Visual Studio.
Nota:
Un motor de depuración tiene como destino un entorno de ejecución específico, es decir, el sistema en el que se ejecuta el programa que se está depurando. El CLR es el tiempo de ejecución para código administrado y el tiempo de ejecución de Win32 es para aplicaciones nativas de Windows. Si el lenguaje que crea puede tener como destino uno de estos dos entornos de ejecución, Visual Studio ya proporciona los motores de depuración necesarios. Lo único que tiene que implementar es un evaluador de expresiones.
Funcionamiento del motor de depuración
Los servicios de supervisión se implementan a través de las interfaces del DE y pueden hacer que el paquete de depuración pase por diferentes modos de funcionamiento. Para más información, consulte los Modos de funcionamiento. Normalmente solo hay una implementación de DE por entorno en tiempo de ejecución.
Nota:
Aunque hay implementaciones de DE independientes para Transact-SQL y JScript, VBScript y JScript comparten un único DE.
La depuración de Visual Studio permite que los motores de depuración ejecuten una de estas dos maneras: ya sea en el mismo proceso que el shell de Visual Studio o en el mismo proceso que el programa de destino que se está depurando. Normalmente, esta última forma se produce cuando el proceso que se depura es realmente un script que se ejecuta en un intérprete. El motor de depuración debe tener un amplio conocimiento del intérprete para supervisar el script. En este caso, el intérprete es realmente un tiempo de ejecución; los motores de depuración son para implementaciones en tiempo de ejecución específicas. Además, la implementación de un único DE se puede dividir entre límites de proceso y máquina (por ejemplo, depuración remota).
El DE expone las interfaces de depuración de Visual Studio. Toda la comunicación es a través de COM. Si el DE se carga en proceso, fuera de proceso o en otro equipo, no afecta a la comunicación de componentes.
El DE funciona con un componente de evaluador de expresiones para permitir que el DE para ese tiempo de ejecución determinado comprenda la sintaxis de las expresiones. El DE también funciona con un componente de controlador de símbolos para acceder a la información de depuración simbólica que genera el compilador de lenguaje. Para obtener más información, consulte Evaluador de expresiones y Proveedor de símbolos.