Capítulo 7. Depuración de programas en KDevelop

Ejecutar un programa en el depurador

Tras configurar un lanzador (consulte Ejecución de programas), también podrá ejecutarlo en un depurador: seleccione la opción del menú EjecutarLanzador de depuración o pulse Alt+F9. Si está familiarizado con gdb, el resultado es el mismo que se obtiene al iniciar gdb con el nombre del ejecutable indicado en la configuración del lanzador y usando luego Ejecutar. Esto significa que si el programa llama en algún momento a abort() (por ejemplo, cuando se genera una aserción no contemplada) o si se produce un error de segmentación, se detendrá el depurador. Por otra parte, si el programa se ejecuta hasta el final (de forma correcta o incorrecta), el depurador no se detendrá por sí mismo antes de que el programa haya finalizado. En este último caso, antes de ejecutar el lanzador de depuración, querrá fijar un punto de interrupción en todas las líneas del código fuente donde desee que se detenga el depurador. Puede hacer esto moviendo el cursor a cada una de dichas líneas y seleccionando la opción del menú EjecutarConmutar punto de interrupción, o haciendo clic con el botón derecho del ratón en una línea y seleccionando Conmutar punto de interrupción en el menú de contexto.

La ejecución de un programa en el depurador hará que KDevelop entre en un modo diferente: sustituirá todos los botones de Herramientas del borde de la ventana principal por otros más adecuados para la depuración que para la edición. Puede ver en qué modo se encuentra observando la parte superior derecha de la ventana, donde existen pestañas denominadas Revisar, Depurar y Código. Si pulsa sobre ellas podrá cambiar entre los tres modos. Cada modo tiene su propio juego de vistas de herramientas, que puede configurar del mismo modo que hicimos con las herramientas de Código en la sección Herramientas y vistas.

Una vez que el depurador se detiene (en un punto de interrupción o donde se haya llamado a abort()), puede inspeccionar diversa información sobre el programa. Por ejemplo, en la imagen superior, hemos seleccionado la herramienta Pila de ejecución en la parte inferior (aproximadamente, como las órdenes backtrace e info threads de gdb), que muestra en la parte de la izquierda los distintos hilos que se están ejecutando en el programa (aquí hay un total de 8) y, en la parte de la derecha, cómo ha llegado la ejecución hasta el punto de interrupción actual (en este caso: main() ha llamado a run(); la lista sería más larga si no s hubiéramos detenido en una función llamada por run()). En la parte de la izquierda podemos inspeccionar las variables locales, incluido el objeto actual (el objeto al que apunta la variable this).

Una vez aquí, disponemos de diversas posibilidades: puede ejecutar la línea actual (F10, como la orden next de gdb), avanzar dentro de funciones (F11, como la orden step de gdb) o ejecutar hasta el final de la función (F12, como la orden finish de gdb). En cada paso, KDevelop actualiza las variables mostradas en la parte de la izquierda con sus valores actuales. También puede situar el ratón sobre cualquier símbolo del código fuente (por ejemplo, una variable) para que KDevelop muestre su valor actual y le ofrezca la posibilidad de detener la ejecución del programa la próxima vez que se modifique el valor de dicho símbolo. Si sabe manejar gdb, también puede pulsar el botón de la herramienta GDB que hay en la parte inferior para disponer de la posibilidad de introducir órdenes de gdb, como, por ejemplo, para cambiar el valor de una variable (para la que no exista otro modo de hacerlo).