GDB(1) Instrumente pentru dezvoltare(programare) GNU GDB(1)

gdb - depanatorul GNU

gdb [OPȚIUNI] [prog|prog IDproc|prog core]

Scopul unui depanator precum „GDB” este de a vă permite să vedeți ce se întâmplă „în interiorul” unui alt program în timp ce acesta se execută -- sau ce făcea un alt program în momentul în care s-a blocat.

GDB poate face patru tipuri principale de lucruri (plus alte lucruri în sprijinul acestora) pentru a vă ajuta să prindeți erorile în flagrant:

  • Pornește programul, specificând orice lucru care ar putea afecta comportamentul acestuia.
  • Face ca programul dumneavoastră să se oprească în anumite condiții.
  • Examinează ce s-a întâmplat atunci când programul dvs. s-a oprit.
  • Schimbă lucruri în program, astfel încât să puteți experimenta cu corectarea efectelor unei erori și să puteți merge mai departe pentru a învăța despre alta.

Puteți utiliza „GDB” pentru a depana programe scrise în C, C++, Fortran și Modula-2.

GDB este invocat cu comanda de shell [u00AB]gdb[u00BB]. Odată pornit, acesta citește comenzi din terminal până când îi spuneți să iasă cu comanda GDB [u201E]quit[u201D] sau [u201E]exit[u201D]. Puteți obține ajutor direct de la GDB folosind comanda [u201E]help[u201D].

Puteți rula [u201E]gdb[u201D] fără argumente sau opțiuni; dar cel mai obișnuit mod de a porni GDB este cu un argument sau două, specificând un program executabil ca argument:

gdb program

Puteți, de asemenea, să porniți atât cu un program executabil, cât și cu un fișier „core” specificat:

gdb program core

Puteți, în schimb, să specificați un ID de proces ca al doilea argument sau să utilizați opțiunea [u201E]-p[u201D], dacă doriți să depanați un proces în curs de desfășurare:

gdb program 1234  gdb -p 1234

va atașa GDB la procesul 1234. Cu opțiunea -p puteți omite numele de fișier program.

Iată câteva dintre cele mai frecvente comenzi de GDB utilizate:

Stabilește un punct de întrerupere la funcția sau linia (în fișier).
Pornește programul (cu listă-arg, dacă este specificată).
Urmărirea traseului(backtrace): afișează stiva programului.
Afișează valoarea unei expresii.
Continuă să ruleze programul (după ce s-a oprit, de exemplu, la un punct de întrerupere).
Execută următoarea linie de program (după oprire); pasul asupra oricăror apeluri de funcție din linia respectivă.
analizați linia de program unde este oprit în prezent.
introduceți textul programului în apropierea locului în care acesta este oprit în prezent.
Execută următoarea linie de program (după oprire); pasul în orice apel de funcție din linie.
Afișează informații despre comanda GDB nume, sau informații generale despre utilizarea GDB.
Ieșire din GDB.

Pentru detalii complete despre GDB, consultați Using GDB: A Guide to the GNU Source-Level Debugger, de Richard M. Stallman și Roland H. Pesch. Același text este disponibil pentru a fi consultat sub forma intrării „gdb” din programul «info».

Orice alte argumente în afară de opțiuni specifică un fișier executabil și un fișier „core” (sau procesul ID); adică, primul argument întâlnit fără un indicator de opțiune asociat este echivalent cu o opțiune --se, iar al doilea, dacă există, este echivalent cu o opțiune -c dacă este numele unui fișier. Multe opțiuni au atât forme lungi, cât și abreviate; ambele sunt prezentate aici. Formele lungi sunt, de asemenea, recunoscute dacă le trunchiați, atâta timp cât este prezentă o cantitate suficientă din opțiune pentru a fi lipsită de ambiguitate.

Formele abreviate sunt prezentate aici cu -, iar formele lungi sunt prezentate cu -- pentru a reflecta modul în care sunt prezentate în --help. Cu toate acestea, GDB recunoaște toate convențiile următoare pentru majoritatea opțiunilor:

"--option=value"
"--option value"
"-option=value"
"-option value"
"--o=value"
"--o value"
"-o=value"
"-o value"

Toate opțiunile și argumentele din linia de comandă pe care le furnizați sunt procesate în ordine secvențială. Ordinea este diferită atunci când se utilizează opțiunea -x.

Listează toate opțiunile, cu scurte explicații.
Citește tabelul de simboluri din fișier.
Activează scrierea în fișiere executabile și „core”.
Utilizează fișier ca fișier executabil pentru a fi executat atunci când este cazul și pentru examinarea datelor pure împreună cu descărcarea conținutului memoriei.
Citește tabelul de simboluri din fișier și îl utilizează ca fișier executabil.
Utilizează fișier ca o descărcare a conținutului memoriei pentru examinare.
Execută comenzile GDB din fișier.
Execută comanda GDB dată.
Execută comanda GDB înainte de a încărca inferiorul.
Adaugă director la ruta de căutare a fișierelor sursă.
Nu execută comenzi din ~/.config/gdb/gdbinit, ~/.gdbinit, ~/.config/gdb/gdbearlyinit, sau ~/.gdbearlyinit
Nu execută comenzi din niciun fișier de inițializare .gdbinit sau .gdbearlyinit.
[u201E]Quiet[u201D] (Silențios). Nu imprimă mesajele introductive și de drepturi de autor. Aceste mesaje sunt, de asemenea, suprimate în modul de funcționare pe loturi de comenzi.
Rulează în modul de funcționare pe loturi de comenzi. Iese cu starea 0 după ce a procesat toate fișierele de comandă specificate cu -x (și .gdbinit, dacă nu este inhibat). Iese cu o stare diferită de zero dacă se produce o eroare la executarea comenzilor GDB din fișierele de comandă.

Modul de funcționare pe loturi de comenzi poate fi util pentru a rula GDB ca un filtru, de exemplu pentru a descărca și rula un program pe un alt calculator; pentru a face acest lucru mai util, mesajul

Programul a ieșit în mod normal.

(care în mod normal este emis ori de câte ori se termină un program care rulează sub controlul GDB) nu este emis atunci când se execută în modul de funcționare pe loturi de comenzi.

Se execută în modul de funcționare pe loturi de comenzi, la fel ca --batch, dar în mod complet silențios. Toate ieșirile „GDB” sunt suprimate (ieșirea de eroare standard nu este afectată). Acest lucru este mult mai silențios decât --silent și ar fi nefolositor pentru o sesiune interactivă.

Acest lucru este deosebit de util atunci când se utilizează obiective care dau mesaje Secțiune de încărcare, de exemplu.

Rețineți că obiectivele care își transmit ieșirea prin GDB,, în loc să scrie direct la [u201E]ieșirea standardu201D]', vor fi, de asemenea, făcute silențioase.

Schimbă interpretarea liniei de comandă astfel încât argumentele care urmează acestei opțiuni să fie transmise ca argumente către inferior(programul depanat). Ca exemplu, să luăm următoarea comandă:
gdb ./a.out -q

Aceasta ar începe GDB cu -q, fără a imprima mesajul introductiv. Pe de altă parte, folosind:

gdb --args ./a.out -q

pornește GDB cu mesajul introductiv și transmite opțiunea către inferior(programul depanat).

Atașează GDB la un program care rulează deja, cu PID pid.
Deschide interfața de utilizator a terminalului.
Citește toate simbolurile din fișierul de simboluri dat la prima accesare.
Nu citește fișierele de simboluri.
Codul de ieșire al lui GDB va fi același cu codul de ieșire al procesului-copil.
Afișează detalii despre configurația GDB și apoi iese.
Afișează informațiile despre versiune și iese.
Rulează GDB folosind directorul ca director de lucru, în loc de directorul curent.
Rulează GDB folosind directorul ca director de date. Directorul de date este locul în care GDB caută fișierele auxiliare.
Emacs activează această opțiune atunci când rulează GDB ca subproces. Aceasta îi spune lui GDB să afișeze numele complet al fișierului și numărul de linie într-un mod standard, recognoscibil, de fiecare dată când este afișat un cadru de stivă ( ceea ce înseamnă de fiecare dată când programul se oprește). Acest format recognoscibil seamănă cu două caractere \032, urmate de numele fișierului, numărul liniei și poziția caracterelor, separate prin două puncte și o linie nouă. Programul de interfață Emacs-to-GDB utilizează cele două caractere \032 ca semnal pentru a afișa codul sursă al cadrului.
Stabilește viteza liniei (viteza de transmisie (rata de bauds sau biți pe secundă)) a oricărei interfețe seriale utilizate de GDB pentru depanarea de la distanță.
Stabilește timpul de așteptare, în secunde, pentru depanarea de la distanță.
Rulează folosind dispozitiv pentru intrarea și ieșirea standard a programului tău.

Documentația completă pentru GDB este menținută ca un manual Texinfo. Dacă programele "info" și "gdb" și documentația Texinfo a GDB sunt instalate corect pe sistemul dvs., comanda

info gdb

ar trebui să vă permită accesul la manualul complet.

Using GDB: A Guide to the GNU Source-Level Debugger, de Richard M. Stallman și Roland H. Pesch, July 1991.

Drepturi de autor © 1988-2023 Free Software Foundation, Inc.

Se acordă permisiunea de a copia, distribui și/sau modifica acest document în conformitate cu termenii licenței GNU Free Documentation License, versiunea 1. 3 sau orice versiune ulterioară publicată de Free Software Foundation; cu secțiunile invariabile "Free Software" și "Free Software Needs Free Documentation", cu textele de pe copertă "A GNU Manual," și cu textele de pe copertă ca la litera (a) de mai jos.

(a) Textul de pe coperta din spate a FSF este: "Aveți libertatea de a copia și modifica acest manual GNU. Cumpărarea de copii de la GNU Press sprijină FSF în dezvoltarea GNU și promovarea libertății software."

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

3 decembrie 2023 gdb-14.1