Integrando VSCode, Mingw-w64 y CMake (Parte IV)
Lecturas de la serie
Sobre este artículo
Tiempo estimado de lectura: 10 minutos
Nivel: Básico
Última actualización: 1 de agosto, 2026
Nivel: Básico
Última actualización: 1 de agosto, 2026
Depuración de proyectos CMake en VS Code
En este artículo analizaremos brevemente el proceso de depuración de un proyecto de CMake a través del editor VS Code. Asumiremos que hemos realizado ya la instalación del conjunto de herramientas mingw-w64-ucrt-x86_64-toolchain —que incorpora el depurador GNU Debugger, abreviado simplemente como GDB [1]—, así como del editor VS Code y sus extensiones para C++, tal y como explicamos en el primer artículo de esta serie.
Depuración
La depuración (debugging) es el proceso de ejecutar un programa de forma controlada con el fin de localizar y corregir errores lógicos o de ejecución (bugs). Para ello, suelen emplearse herramientas denominadas depuradores, que permiten detener la ejecución en puntos concretos del código y avanzar paso a paso por sus instrucciones. Los depuradores necesitan que el ejecutable haya sido compilado previamente incluyendo información de depuración.
La depuración abarca también otras técnicas complementarias, como el análisis de registros (logs), la impresión controlada de información en consola o la elaboración de casos mínimos de prueba para reproducir un problema.
Partamos de un proyecto de CMake como el proporcionado en el tercer artículo de esta serie. VS Code permite la incorporación de puntos de interrupción (breakpoints) en las líneas de código que consideremos convenientes sin más que hacer clic en el margen izquierdo del editor de texto (nótese el punto sólido rojo en la línea de código 24 de la captura inferior):
Cuando la ejecución alcance un punto de interrupción, el programa quedará temporalmente detenido y el control pasará al depurador.
VS Code permite establecer breakpoints condicionales basados en expresiones, recuentos de visitas (hit counts) o una combinación de ambos [2]:
- Condición de expresión: el punto de interrupción se activa siempre que la expresión se evalúe como verdadera.
- Recuento de visitas (hit count): controla cuántas veces debe alcanzarse un punto de interrupción antes de que interrumpa la ejecución.
- Esperar punto de interrupción (wait for breakpoint): el punto de interrupción se activa cuando se alcanza otro punto de interrupción diferente.
Otra funcionalidad de utilidad viene dada por los puntos de registro (logpoints), una variante de los puntos de interrupción que no interrumpe la ejecución en el depurador, sino que, en su lugar, registra un mensaje en la consola de depuración.
Para iniciar el proceso de depuración, accederemos a la vista de CMake mediante el icono situado en la barra de actividad lateral del editor. Dentro de la sección "Project Status" estableceremos "Debug" como variante de construcción. Ello permitirá la compilación del proyecto incorporando información adicional sobre funciones, variables y líneas de código, de forma que el depurador pueda relacionar la ejecución del programa con el código fuente:
En una configuración "Release", los compiladores aplican optimizaciones agresivas, excluyendo información una depuración. En una configuración "RelWithDebInfo", se mantienen optimizaciones para velocidad, pero conservando símbolos de depuración.
A continuación, haremos clic sobre el icono en forma de bug en la subsección "Project Status > Debug" mostrada en la figura inferior:
El editor nos conducirá entonces, de forma automática, al área de depuración "Run and Debug", desde donde podremos hacer un seguimiento del proceso mediante los siguientes paneles:
- VARIABLES: permite inspeccionar las variables locales, argumentos y registros asociados al stack frame actualmente seleccionado. Puede modificarse el valor de una variable durante el proceso de depuración haciendo clic sobre su nombre con el botón derecho del ratón.
- WATCH: permite observar expresiones seleccionadas por el usuario durante el proceso de depuración.
- CALL STACK: muestra la pila de llamadas que ha conducido al punto actual de ejecución. Los valores de las variables y la evaluación de expresiones son siempre relativos al stack frame seleccionado en esta sección.
Una barra de iconos superior nos ofrece, por su parte, las operaciones básicas del debugger, que describimos a continuación de izquierda a derecha:
- Continue/Pause: reanuda la ejecución del programa hasta alcanzar un nuevo punto de interrupción o la detiene temporalmente si se encuentra en ejecución.
- Step over: ejecuta la siguiente sentencia del código fuente, sin entrar en las llamadas a funciones que ésta invoque.
- Step into: si la siguiente sentencia contiene una llamada a función, el depurador entra en dicha función para continuar la ejecución paso a paso.
- Step out: cuando se está dentro de una función o método, regresa al contexto de ejecución anterior ejecutando el resto de instrucciones de la función actual como si constituyeran un único paso.
- Restart: termina la ejecución del programa actual e inicia la depuración de nuevo usando la configuración de ejecución actual.
- Stop: termina la ejecución del programa actual.
El lector puede consultar la referencia [2] para obtener más detalles acerca de estos puntos.
Referencias bibliográficas
- GDB: The GNU Project Debugger – https://www.sourceware.org/gdb/
- https://code.visualstudio.com/ – https://code.visualstudio.com/docs/debugtest/debugging




