GDB(1)

NUME
gdb - depanatorul GNU

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

DESCRIERE
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 gdb. Odată pornit, acesta citește comenzi din terminal până când îi spuneți să iasă cu comanda GDB quit sau exit. Puteți obține ajutor direct de la GDB folosind comanda help.

Puteți rula gdb 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 -p, 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:

break [fișier:][funcția|linia]
    Stabilește un punct de întrerupere la funcția sau linia (în fișier).

run [listă-arg]
    Pornește programul (cu listă-arg, dacă este specificată).

bt  Urmărirea traseului(backtrace): afișează stiva programului.

print expresia
    Afișează valoarea unei expresii.

c   Continuă să ruleze programul (după ce s-a oprit, de exemplu, la un punct de întrerupere).

next
    Execută următoarea linie de program (după oprire); pasul asupra oricăror apeluri de funcție din linia respectivă.

edit [fișier:]funcția
    analizați linia de program unde este oprit în prezent.

list [fișier:]funcția
    introduceți textul programului în apropierea locului în care acesta este oprit în prezent.

step
    Execută următoarea linie de program (după oprire); pasul în orice apel de funcție din linie.

help [nume]
    Afișează informații despre comanda GDB nume, sau informații generale despre utilizarea GDB.

quit
exit
    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».

OPȚIUNI
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.

--help
-h  Listează toate opțiunile, cu scurte explicații.

--symbols=fișier
-s fișier
    Citește tabelul de simboluri din fișier.

--write
    Activează scrierea în fișiere executabile și „core”.

--exec=fișier
-e fișier
    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.

--se=fișier
    Citește tabelul de simboluri din fișier și îl utilizează ca fișier executabil.

--core=fișier
-c fișier
    Utilizează fișier ca o descărcare a conținutului memoriei pentru examinare.

--command=fișier
-x fișier
    Execută comenzile GDB din fișier.

--eval-command=comanda
-ex comanda
    Execută comanda GDB dată.

--init-eval-command=comanda
-iex
    Execută comanda GDB înainte de a încărca inferiorul.

--directory=director
-d director
    Adaugă director la ruta de căutare a fișierelor sursă.

--nh
    Nu execută comenzi din ~/.config/gdb/gdbinit, ~/.gdbinit, ~/.config/gdb/gdbearlyinit, sau ~/.gdbearlyinit

--nx
-n  Nu execută comenzi din niciun fișier de inițializare .gdbinit sau .gdbearlyinit.

--quiet
--silent
-q  Quiet (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.

--batch
    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.

--batch-silent
    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 ieșirea standard, vor fi, de asemenea, făcute silențioase.

--args prog [listă-arg]
    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).

--pid=pid
    Atașează GDB la un program care rulează deja, cu PID pid.

--tui
    Deschide interfața de utilizator a terminalului.

--readnow
    Citește toate simbolurile din fișierul de simboluri dat la prima accesare.

--readnever
    Nu citește fișierele de simboluri.

--return-child-result
    Codul de ieșire al lui GDB va fi același cu codul de ieșire al procesului-copil.

--configuration
    Afișează detalii despre configurația GDB și apoi iese.

--version
    Afișează informațiile despre versiune și iese.

--cd=director
    Rulează GDB folosind directorul ca director de lucru, în loc de directorul curent.

--data-directory=director
-D  Rulează GDB folosind directorul ca director de date. Directorul de date este locul în care GDB caută fișierele auxiliare.

--fullname
-f  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.

-b rata-bauds
    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ță.

-l timp-așteptare
    Stabilește timpul de așteptare, în secunde, pentru depanarea de la distanță.

--tty=dispozitiv
    Rulează folosind dispozitiv pentru intrarea și ieșirea standard a programului tău.

CONSULTAȚI ȘI
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
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."

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

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) 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.