This is an old revision of the document!


Debugging

Programele pot să nu meargă din mai multe motive. Pagina aceasta prezintă câteva abordări pe care să le urmați pentru a face debugging atunci când programele voastre nu funcționează. Lista nu este exhaustivă, ci doar prezintă câteva erori frecvente și moduri în care ați putea să le rezolvați.

Erori de compilare

Dacă programul vostru nu este scris corect din punct de vedere sintactic, atunci acesta va da erori la compilare.

gcc generează un excutabil doar dacă NU au existat erori de compilare. Dacă generează output, înseamnă că există probleme. Trebuie să vă asigurați întotdeauna că gcc nu a generat niciun output, pentru a fi siguri că aveți un executabil nou generat.

Uneori gcc generează erori și astfel nu se generează fișierul executabil dorit. Dacă totuși există un executabil, înseamnă că este cel creat înainte ca compilarea să înceapă să genereze erori. Aceasta este o greșeală frecventă.

Asigurați-vă întotdeauna de faptul că gcc nu produce niciun output.

Warning-uri de compilare

gcc poate identifica unele probleme, dar care nu generează erori, ci warning-uri. În cazul acesta, compilarea reușește și generează un executabil nou.

Warning-urile nu sunt erori pentru că sunt cazuri în care programatorul consecințele acestora și pot face parte din rezolvarea voită a programului.

Pentru a forța compilatorul să afișeze toate warning-urile folosiți paramentrul -Wall. Exemplu:

gcc -Wall ex1.c -o exe

În cadrul cursului de programare nu vom avea niciodată nevoie de construcții ce sunt ok chiar dacă compilatorul arată warning-uri. De aceea vă încurajăm să scăpați întotdeauna de ele.

Warning-urile pot duce la rezultate eronate. Exemplu de posibile warning-uri:

  • atribuirea de număr cu semn unui întreg fără semn
  • cast-uri de la int la char (deci cu diminuare de spațiu)
  • atribuirea de pointeri la variabile numerice
  • etc.

Toate aceste warning-uri pot face ca rezultatul calculat să nu fie cel dorit.
Amintiți-vă de exemplele din laboratorul 02.

Segmentation fault / stack smashing detected

programare/debugging.1477895436.txt.gz · Last modified: 2016/10/31 08:30 by laura.vasilescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0