GDB înseamnă GNU Project Debugger și este un instrument puternic de depanare pentru C (împreună cu alte limbaje precum C++). Vă ajută să vă uitați în interiorul programelor dvs. C în timp ce acestea se execută și vă permite, de asemenea, să vedeți ce se întâmplă exact când programul se blochează. GDB operează pe fișiere executabile, care sunt fișiere binare produse de procesul de compilare.
În scopuri demonstrative, exemplul de mai jos este executat pe o mașină Linux cu specificațiile de mai jos.
uname -a>

uname -a
Să învățăm făcând: -
Porniți GDB
Accesați linia de comandă Linux și tastați gdb.
gdb>
gdb
cheia primară și cheia compusă în sql
Promptul deschis Gdb vă informează că este gata pentru comenzi. Pentru a ieși din gdb, tastați ieșire sau q.

Să renunț
Compilați codul
Mai jos este un program care arată un comportament nedefinit atunci când este compilat folosind C99.
Notă: Dacă un obiect care are o durată de stocare automată nu este inițializat în mod explicit, valoarea lui este nedeterminată, unde valoarea nedeterminată este fie o valoare nespecificată, fie o reprezentare capcană.
Acum compilați codul. (aici test.c). g steag înseamnă că puteți vedea numele proprii ale variabilelor și funcțiilor în cadrele dvs. de stivă, puteți obține numere de linie și puteți vedea sursa pe măsură ce vă plimbați în executabil. -std=C99 steag implică utilizarea standardului C99 pentru a compila codul. -o steag scrie rezultatul de compilare într-un fișier de ieșire.
gcc -std=c99 -g -o test test.C>
gcc -std=c99 -g -o test test.C
Rulați GDB cu executabilul generat
Tastați următoarea comandă pentru a porni GDB cu executabilul compilat.
gdb ./test>
gdb ./test
Comenzi GDB utile:
Iată câteva comenzi utile pentru a începe cu GDB.
Comanda | Descriere |
---|---|
alerga sau r | Execută programul de la început până la sfârșit. |
pauză sau b | Setează un punct de întrerupere pe o anumită linie. |
dezactivați | Dezactivează un punct de întrerupere |
permite | Activează un punct de întrerupere dezactivat. |
următorul sau n | Execută următoarea linie de cod fără a se scufunda în funcții. |
Etapa | Trece la instrucțiunea următoare, mergând în funcție. |
lista sau l | Afișează codul. |
tipăriți sau p | Afișează valoarea unei variabile. |
renunță sau q | Ieșiri din GDB. |
clar | Șterge toate punctele de întrerupere. |
continua | Continuă execuția normală |
Afișează codul
Acum, tastați l la promptul gdb pentru a afișa codul.

Afișează codul
Setați un punct de întrerupere
Să introducem un punct de întrerupere, să spunem linia 5.

Setați un punct de întrerupere
Dacă doriți să puneți punct de întrerupere la linii diferite, puteți tasta b Numărul de linie .În mod implicit, lista sau l afișează numai primele 10 rânduri.
Vizualizați punctele de întrerupere
Pentru a vedea punctele de întrerupere, tastați info b.

Vizualizați punctele de întrerupere
Dezactivați un punct de întrerupere
După ce ați făcut cele de mai sus, să presupunem că v-ați răzgândit și doriți să reveniți. Tastați dezactivare b.

Dezactivați un punct de întrerupere
Reactivați un punct de întrerupere dezactivat
După cum este marcat în cercul albastru, Enb devine n pentru dezactivat. 9. Pentru a reactiva punctul de întrerupere recent dezactivat. Tastați activare b.

Reactivați un punct de întrerupere dezactivat
frații kylie jenner
Rulați codul
Rulați codul tastând run sau r. Dacă nu ați setat niciun punct de întrerupere, comanda de rulare va executa pur și simplu programul complet.

Rulați codul
Tipăriți valorile variabilelor
Pentru a vedea valoarea variabilei, tastați print nume_variabilă sau p nume_variabilă .

Tipăriți valorile variabilelor
Cele de mai sus arată valorile stocate la x la momentul execuției.
Modificați valorile variabilelor
Pentru a modifica valoarea variabilei în gdb și a continua execuția cu valoarea modificată, tastați set nume_variabilă .
Ieșire de depanare
Captura de ecran de mai jos arată valorile variabilelor din care este destul de înțeles motivul pentru care am obținut o valoare de gunoi ca rezultat. La fiecare executare a . /Test vom primi o ieșire diferită.
Exercițiu: Încercați să utilizați set x = 0 în gdb la prima rulare și vedeți rezultatul lui c.
Ieșire de depanare
GDB oferă multe mai multe moduri de a depana și de a înțelege codul, cum ar fi examinarea stivei, a memoriei, a firelor de execuție, a manipulării programului etc. Sper că exemplul de mai sus vă va ajuta să începeți cu gdb.
Concluzie
În acest articol am discutat despre GDB (GNU Debugger) care este un instrument puternic în Linux folosit pentru depanarea programelor C. Am discutat câțiva dintre următorii pași, astfel încât să putem compila codul cu informații de depanare, să rulăm GDB, să setăm punctul de întrerupere, să examinăm variabilele și să analizăm comportamentul programului. De asemenea, am discutat despre caracteristicile GDB, cum ar fi examinarea codului, managementul punctelor de întrerupere, manipularea variabilelor și controlul execuției programului, care ne permit să depanăm eficient și să rezolvăm problemele.