logo

GDB (introducere pas cu pas)

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

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.

quit_gdb

Să renunț

Compilați codul

Mai jos este un program care arată un comportament nedefinit atunci când este compilat folosind C99. lista-1



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.

punct de întrerupere

Afișează codul

Setați un punct de întrerupere

Să introducem un punct de întrerupere, să spunem linia 5.

info_b

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.

dezactivați

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.

activare-1

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.

prima alergare

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.

print_value_x

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.