Capítol 7. Depurar programes al KDevelop

Executar un programa en el depurador

Una vegada tingueu configurat un llançament (vegeu Executar programes), també el podeu executar en un depurador: Seleccioneu l'element de menú ExecutaLlança al depurador o premeu Alt+F9. Si esteu familiaritzat amb el gdb, l'efecte és el mateix que iniciar el gdb amb l'executable especificat en la configuració del llançament i després dient Executa. Això vol dir que si el programa crida abort() en algun moment (p. ex., quan s'executa sobre una asserció que falla) o si hi ha un error de segmentació, a continuació s'aturarà el ​​depurador. D'altra banda, si el programa s'executa fins al final (de forma correcta o no), llavors el depurador no s'aturarà per si mateix fins que finalitzi el programa. En aquest últim cas, haureu d'establir un punt d'interrupció en totes les línies del codi base en les quals voleu que el depurador s'aturi abans d'executar el llançament de depuració. Ho podeu fer movent el cursor a una certa línia i seleccionant l'element de menú ExecutaCommuta el punt d'interrupció, o fent clic dret en una línia i seleccionant Commuta el punt d'interrupció des del menú contextual.

Executar un programa en el depurador posarà el KDevelop en un mode diferent: se substituiran tots els botons d'«eina» en el perímetre de la finestra principal per altres que siguin apropiats per a la depuració, en lloc de per als d'edició. Podeu veure en quin mode es troba observant la part superior dreta de la finestra: hi ha pestanyes anomenades Revisió, Depuració i Codi. En fer clic en elles se us permetrà alternar entre els tres modes. Cada mode té un conjunt de vistes d'eina pròpia, que es poden configurar de la mateixa manera que hem configurat les eines Codi a la secció Eines i vistes.

Una vegada s'atura el depurador (en un punt d'interrupció o punt on es crida abort()), podreu inspeccionar una varietat d'informació sobre el vostre programa. Per exemple, en la imatge anterior, hem seleccionat l'eina Pila d'execució a la part inferior (més o menys equivalent a les ordres «backtrace» i «info threads» del gdb) que mostra a l'esquerra els diversos fils que s'estan executant actualment en el vostre programa (aquí un total de 8) i com l'execució arriba al punt d'aturada actual a la dreta (aquí: «main()» ha cridat a «run()»; la llista podria ser més llarga de no haver-se aturat a una funció anomenada run()). A l'esquerra, podem inspeccionar les variables locals, inclòs l'objecte actual (l'objecte apuntat per la variable this).

A partir d'aquí, hi ha diverses possibilitats: Podeu executar la línia actual (F10, l'ordre «next» del gdb), entrar en les funcions (F11, l'ordre «step» del gdb) o executar fins al final de la funció (F12, l'ordre «finish» del gdb). A cada pas, el KDevelop actualitza les variables que es mostren a l'esquerra als seus valors actuals. També podeu passa el ratolí sobre un símbol en el codi, p. ex., una variable, el KDevelop mostrarà el valor actual d'aquest símbol i oferirà aturar el programa durant l'execució la pròxima vegada que es canviï el valor d'aquesta variable. Si coneixeu el gdb, també podeu fer clic al botó de l'eina GDB a la part inferior i tenir la possibilitat d'introduir ordres del gdb, p. ex., amb la finalitat de canviar el valor d'una variable (per al qual actualment no sembla haver-hi una altra manera).