GDB(1) Instrumente pentru dezvoltare(programare) GNU GDB(1) NUME gdb - depanatorul GNU SINOPSIS gdb [OPIUNI] [prog|prog IDproc|prog core] DESCRIERE Scopul unui depanator precum ,,GDB" este de a va permite sa vedei ce se intampla ,,in interiorul" unui alt program in timp ce acesta se executa -- sau ce facea un alt program in momentul in care s-a blocat. GDB poate face patru tipuri principale de lucruri (plus alte lucruri in sprijinul acestora) pentru a va ajuta sa prindei erorile in flagrant: o Pornete programul, specificand orice lucru care ar putea afecta comportamentul acestuia. o Face ca programul dumneavoastra sa se opreasca in anumite condiii. o Examineaza ce s-a intamplat atunci cand programul dvs. s-a oprit. o Schimba lucruri in program, astfel incat sa putei experimenta cu corectarea efectelor unei erori i sa putei merge mai departe pentru a invaa despre alta. Putei utiliza ,,GDB" pentru a depana programe scrise in C, C++, Fortran i Modula-2. GDB este invocat cu comanda de shell <>. Odata pornit, acesta citete comenzi din terminal pana cand ii spunei sa iasa cu comanda GDB ,,quit" sau ,,exit". Putei obine ajutor direct de la GDB folosind comanda ,,help". Putei rula ,,gdb" fara argumente sau opiuni; dar cel mai obinuit mod de a porni GDB este cu un argument sau doua, specificand un program executabil ca argument: gdb program Putei, de asemenea, sa pornii atat cu un program executabil, cat i cu un fiier ,,core" specificat: gdb program core Putei, in schimb, sa specificai un ID de proces ca al doilea argument sau sa utilizai opiunea ,,-p", daca dorii sa depanai un proces in curs de desfaurare: gdb program 1234 gdb -p 1234 va ataa GDB la procesul 1234. Cu opiunea -p putei omite numele de fiier program. Iata cateva dintre cele mai frecvente comenzi de GDB utilizate: break [fiier:][funcia|linia] Stabilete un punct de intrerupere la funcia sau linia (in fiier). run [lista-arg] Pornete programul (cu lista-arg, daca este specificata). bt Urmarirea traseului(backtrace): afieaza stiva programului. print expresia Afieaza valoarea unei expresii. c Continua sa ruleze programul (dupa ce s-a oprit, de exemplu, la un punct de intrerupere). next Executa urmatoarea linie de program (dupa oprire); pasul asupra oricaror apeluri de funcie din linia respectiva. edit [fiier:]funcia analizai linia de program unde este oprit in prezent. list [fiier:]funcia introducei textul programului in apropierea locului in care acesta este oprit in prezent. step Executa urmatoarea linie de program (dupa oprire); pasul in orice apel de funcie din linie. help [nume] Afieaza informaii despre comanda GDB nume, sau informaii generale despre utilizarea GDB. quit exit Ieire din GDB. Pentru detalii complete despre GDB, consultai Using GDB: A Guide to the GNU Source-Level Debugger, de Richard M. Stallman i Roland H. Pesch. Acelai text este disponibil pentru a fi consultat sub forma intrarii ,,gdb" din programul <>. OPIUNI Orice alte argumente in afara de opiuni specifica un fiier executabil i un fiier ,,core" (sau procesul ID); adica, primul argument intalnit fara un indicator de opiune asociat este echivalent cu o opiune --se, iar al doilea, daca exista, este echivalent cu o opiune -c daca este numele unui fiier. Multe opiuni au atat forme lungi, cat i abreviate; ambele sunt prezentate aici. Formele lungi sunt, de asemenea, recunoscute daca le trunchiai, atata timp cat este prezenta o cantitate suficienta din opiune pentru a fi lipsita de ambiguitate. Formele abreviate sunt prezentate aici cu -, iar formele lungi sunt prezentate cu -- pentru a reflecta modul in care sunt prezentate in --help. Cu toate acestea, GDB recunoate toate conveniile urmatoare pentru majoritatea opiunilor: "--option=value" "--option value" "-option=value" "-option value" "--o=value" "--o value" "-o=value" "-o value" Toate opiunile i argumentele din linia de comanda pe care le furnizai sunt procesate in ordine secveniala. Ordinea este diferita atunci cand se utilizeaza opiunea -x. --help -h Listeaza toate opiunile, cu scurte explicaii. --symbols=fiier -s fiier Citete tabelul de simboluri din fiier. --write Activeaza scrierea in fiiere executabile i ,,core". --exec=fiier -e fiier Utilizeaza fiier ca fiier executabil pentru a fi executat atunci cand este cazul i pentru examinarea datelor pure impreuna cu descarcarea coninutului memoriei. --se=fiier Citete tabelul de simboluri din fiier i il utilizeaza ca fiier executabil. --core=fiier -c fiier Utilizeaza fiier ca o descarcare a coninutului memoriei pentru examinare. --command=fiier -x fiier Executa comenzile GDB din fiier. --eval-command=comanda -ex comanda Executa comanda GDB data. --init-eval-command=comanda -iex Executa comanda GDB inainte de a incarca inferiorul. --directory=director -d director Adauga director la ruta de cautare a fiierelor sursa. --nh Nu executa comenzi din ~/.config/gdb/gdbinit, ~/.gdbinit, ~/.config/gdb/gdbearlyinit, sau ~/.gdbearlyinit --nx -n Nu executa comenzi din niciun fiier de iniializare .gdbinit sau .gdbearlyinit. --quiet --silent -q ,,Quiet" (Silenios). Nu imprima mesajele introductive i de drepturi de autor. Aceste mesaje sunt, de asemenea, suprimate in modul de funcionare pe loturi de comenzi. --batch Ruleaza in modul de funcionare pe loturi de comenzi. Iese cu starea 0 dupa ce a procesat toate fiierele de comanda specificate cu -x (i .gdbinit, daca nu este inhibat). Iese cu o stare diferita de zero daca se produce o eroare la executarea comenzilor GDB din fiierele de comanda. Modul de funcionare pe loturi de comenzi poate fi util pentru a rula GDB ca un filtru, de exemplu pentru a descarca i rula un program pe un alt calculator; pentru a face acest lucru mai util, mesajul Programul a ieit in mod normal. (care in mod normal este emis ori de cate ori se termina un program care ruleaza sub controlul GDB) nu este emis atunci cand se executa in modul de funcionare pe loturi de comenzi. --batch-silent Se executa in modul de funcionare pe loturi de comenzi, la fel ca --batch, dar in mod complet silenios. Toate ieirile ,,GDB" sunt suprimate (ieirea de eroare standard nu este afectata). Acest lucru este mult mai silenios decat --silent i ar fi nefolositor pentru o sesiune interactiva. Acest lucru este deosebit de util atunci cand se utilizeaza obiective care dau mesaje Seciune de incarcare, de exemplu. Reinei ca obiectivele care ii transmit ieirea prin GDB,, in loc sa scrie direct la ,,ieirea standard"', vor fi, de asemenea, facute silenioase. --args prog [lista-arg] Schimba interpretarea liniei de comanda astfel incat argumentele care urmeaza acestei opiuni sa fie transmise ca argumente catre inferior(programul depanat). Ca exemplu, sa luam urmatoarea comanda: gdb ./a.out -q Aceasta ar incepe GDB cu -q, fara a imprima mesajul introductiv. Pe de alta parte, folosind: gdb --args ./a.out -q pornete GDB cu mesajul introductiv i transmite opiunea catre inferior(programul depanat). --pid=pid Ataeaza GDB la un program care ruleaza deja, cu PID pid. --tui Deschide interfaa de utilizator a terminalului. --readnow Citete toate simbolurile din fiierul de simboluri dat la prima accesare. --readnever Nu citete fiierele de simboluri. --return-child-result Codul de ieire al lui GDB va fi acelai cu codul de ieire al procesului-copil. --configuration Afieaza detalii despre configuraia GDB i apoi iese. --version Afieaza informaiile despre versiune i iese. --cd=director Ruleaza GDB folosind directorul ca director de lucru, in loc de directorul curent. --data-directory=director -D Ruleaza GDB folosind directorul ca director de date. Directorul de date este locul in care GDB cauta fiierele auxiliare. --fullname -f Emacs activeaza aceasta opiune atunci cand ruleaza GDB ca subproces. Aceasta ii spune lui GDB sa afieze numele complet al fiierului i numarul de linie intr-un mod standard, recognoscibil, de fiecare data cand este afiat un cadru de stiva ( ceea ce inseamna de fiecare data cand programul se oprete). Acest format recognoscibil seamana cu doua caractere \032, urmate de numele fiierului, numarul liniei i poziia caracterelor, separate prin doua puncte i o linie noua. Programul de interfaa Emacs-to-GDB utilizeaza cele doua caractere \032 ca semnal pentru a afia codul sursa al cadrului. -b rata-bauds Stabilete viteza liniei (viteza de transmisie (rata de bauds sau bii pe secunda)) a oricarei interfee seriale utilizate de GDB pentru depanarea de la distana. -l timp-ateptare Stabilete timpul de ateptare, in secunde, pentru depanarea de la distana. --tty=dispozitiv Ruleaza folosind dispozitiv pentru intrarea i ieirea standard a programului tau. CONSULTAI I Documentaia completa pentru GDB este meninuta ca un manual Texinfo. Daca programele info i gdb i documentaia Texinfo a GDB sunt instalate corect pe sistemul dvs., comanda info gdb ar trebui sa va permita 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 (C) 1988-2023 Free Software Foundation, Inc. Se acorda permisiunea de a copia, distribui i/sau modifica acest document in conformitate cu termenii licenei GNU Free Documentation License, versiunea 1. 3 sau orice versiune ulterioara publicata de Free Software Foundation; cu seciunile invariabile ,,Free Software" i ,,Free Software Needs Free Documentation", cu textele de pe coperta ,,A GNU Manual" i cu textele de pe coperta ca la litera (a) de mai jos. (a) Textul de pe coperta din spate a FSF este: ,,Avei libertatea de a copia i modifica acest manual GNU. Cumpararea de copii de la GNU Press sprijina FSF in dezvoltarea GNU i promovarea libertaii software." TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . gdb-14.2 3 martie 2024 GDB(1)