![]() |
Mòdul
4
![]() |
Fonaments de
Programació. Llenguatge C/C++![]() |
Pràctica ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
Pràctica
d'ampliació ![]() |
|
Annex
La depuració Abans de produir la versió definitiva d'un programa hem de procurar que aquest estigui lliure d’errors. En el moment de la compilació, aquest ens pot avisar d’alguns errors de sintaxi, confusió de tipus, etc. Aquests errors que pot detectar el compilador s’anomenen errors de compilació, i gairebé sempre són fàcils de detectar. Si per al compilador la sintaxi del programa és correcta, però aquest no fa exactament el que hauria de fer, pot ser degut, segurament, a un error lògic o error d’execució. Aquests tipus d'errors són els realment difícils de detectar. Per ajudar a detectar-los es fa imprescindible una eina que ens permeti supervisar l'execució dels nostres programes i acorralar l'error fins la localització en el codi font. Nosaltres utilitzarem el gdb sota llicencia GNU.. Errors i advertiments de compilació Una vegada acabada l'escriptura del codi del programa es construeix l'aplicació. Ja hem vist que tots els errors detectats pel compilador, així com altres advertiments, es mostren a la finestra de sortida, particularment a la pestanya Build d'aquesta finestra. El compilador ens pot donar dos tipus de missatges: els errors i els advertiments (warnings). Els advertiments (warnings) son problemes lleus o alertes sobre possibles problemes. Encara que el compilador acabarà creant el programa executable és important corregir aquest errors que originen els advertiments, perquè segur que seran l'origen de futurs problemes més greus. Un error impedeix la construcció de l'executable. El compilador ens informa del tipus d'error i la línia en la qual es produeix l'error. S'ha de tenir en compte que no tots els errors són independents, això vol dir que és probable que un mateix error produeixi més d'un missatge d'error, per exemple, si no declarem una variable, el compilador detectarà un error cada vegada que aparegui en el codi aquesta variable. Els errors més freqüents que es sol cometre i que detecta el compilador són:
A més d'aquests errors que obliguen a corregir el codi i tornar a compilar o construir l'aplicació, el compilador ens avisa d'algunes circumstàncies que, encara que no impedeixen la construcció de l'aplicació, poden ser errors que s'han de corregir. Per exemple, el compilador ens avisarà si:
Si tot a anat bé i el compilador ha fet la seva tasca sense detectar cap error, ja és pot crear l'executable ( munta F11 ). Exemple de depuració amb el Terminal Perque un programa pugui ser depurat correctament, el seu executable haura de contenir certa informació que ho associï al codi font del qual va derivar. Per contenir aquesta informació hem de compilar el programa amb l'opció -g. Algunes de les funcions del depurador ens permetra fer:
Ordres per controlar la depuració:
Agafem la pràctica 1 d'aquest mòdul per provar el depurador. En les següents captures de pantalla podeu observar algunes de les comandes. Primer de tot recordeu de compilar amb l'opció -g gcc -g m4p01.c -o m4p01. Cridem al depurador, gdb m4p01 ( nom de l'executable ) i hem de tenir una finestra mes o menys com la següent: Comprovem el comando list Comprovem les ordres break, run, i print. Exemple de depuració amb Anjuta Si volem utilitzar el Depurador des de l'EID Anjuta recordeu de escollir del menú principal l'opció Paràmetres/Ordres i dins Ordres específiques del llenguatge afegiu -g al llenguatge C i al C++. Les opcions per depurar es troben sota Depura del menú principal. Explicar-les totes les possibiltats de depuració comportaria molt temps, però això només provarem alguns dels comandos més habituals. Agafeu la pràctica 1 d'aquest mòdul m4p01.c per fer les següents proves: - Trieu del menú principal Depura/Inicia - Trieu del menú principal Depura/carrega executable - Per exemple anem a posar un punt de ruptura en la línia 18 per mirar el contingut de les variables. Trieu Depura/Punts de ruptura/Defenix punt de ruptura i tindreu en la pantalla la següent finestra. Si teniu el cursor en la línia 20 ja us apareixerà en Ubicació: m4p01.c:20 - Trieu Depura/Execució/ i dins els submenu Executa/continua
Com veus en l'anterior captura de pantalla, l'execució del programa s'aturat en la línia 20.
- Si Volem coneixer en aquest punt concret quins son el contingut de les variables trieu del menú principal Depura/Informació/informació de variables locals
Acabeu l'execució i atureu el depurador ( Depura/Atura el depurador ) Si us trobeu en la pantalla d'edició i premeu el botó dret del ratoli tindreu accés més ràpid a certs comandos de la depuració. |
![]() |
![]() |