Debugging cu GDB

Acest capitol discută despre cum să înceapă GDB, și cum să iasă din ea. Principii de bază:
  • introduceți `gdb„pentru a începe GDB.
  • introduceți renunțe sau C-d pentru a ieși din acestea.

Apel GDB GDB prin rularea programului. După ce a început, GDB citește comenzi de la terminal, atâta timp cât nu-i spui să iasă.

Puteți rula, de asemenea, GDB cu o varietate de argumente și opțiuni la începutul mediului de depanare mai bine.

Opțiunile linie de comandă descrise aici sunt destinate să acopere o varietate de situații; deytsvitelno în unele dintre aceste opțiuni să nu fie disponibile în unele medii.

Cel mai adesea, GDB se execută cu un singur argument, specificând un program executabil:

De asemenea, puteți începe cu atât un program executabil și un fișier de bază:

Dacă doriți să depana procesul care rulează în prezent, în schimb, aveți posibilitatea să specificați un al doilea argument identificatorul procesului:

ar atașa GDB pentru a procesa 1234 (cu excepția cazului, desigur, nu aveți un fișier numit `1234“. GDB mai întâi verificați pentru un fișier de bază).

Avantajele care pot fi obținute atunci când un al doilea argument linie de comandă necesită un sistem de operare destul de completă; Dacă utilizați GDB ca depanator de la distanță atașat la un computer fără un sistem de operare, nu poate fi nici o noțiune de „proces“, și de multe ori nu există nici o modalitate de a obține o groapa. GDB vă va avertiza în cazul în care nu se poate atașa sau pentru a citi gropile de bază.

Puteți rula GDB fără a imprima mesajul, care descrie lipsa de garanție, prin specificarea -silent.

În plus, puteți controla modul în care GDB pornește cu ajutorul switch-uri de linie de comandă. GDB în sine vă poate aminti de opțiunile disponibile.

pentru a afișa toate opțiunile disponibile și pe scurt descrie utilizarea lor (echivalent mai scurt --- `-h gdb„).

Toate cheile pe care le setați și parametrii de linie de comandă sunt procesate secvențial. Procedura devine importantă atunci când se utilizează cheia `-x“.

La pornire, GDB citește alte opțiuni decât ar fi specificarea unui fișier executabil și fișierul de bază (sau ID-ul de proces) argumente, la fel ca și în cazul în care argumentele au fost specificate cheile `-SE„and` -c“, respectiv. (GDB spus primul parametru care nu are steag corespunzător cheie echivalentă cheie `-SE„urmat de acest parametru ;. Iar al doilea parametru, care nu are steagul cheie corespunzătoare, în cazul în care acesta este echivalentul key` -c“urmat. opțiune.)

Dacă GDB a fost configurat pentru a sprijini inclus fișier de bază, care este cazul pentru obiectivele cele mai integrate, se va plânge de un al doilea argument si ignora-l.

Cheile -mapped și -readnow frecvent utilizate împreună pentru a construi fișierul `.syms'. care conține informații complete simbol. „Aici este o simpla lansare GdB, nu fac nimic, dar a construi a` .syms (. Fișier pentru referințe ulterioare A se vedea secțiunea 12.1 Comenzi pentru a specifica fișiere pentru informații despre fișierele` .syms..):

renunțe la [expresie] q Pentru a ieși din GDB, utilizați comanda quit (q prescurtat) sau tastați un capăt al fișierului (de obicei, C-d). Dacă nu specificați o expresie. GDB se va termina în mod normal; în caz contrar, se folosește rezultatul expresiei ca un cod de eroare.

De întrerupere (de multe ori C-c) nu ieși din GDB, ci mai degrabă se termină orice execută comanda și revine la nivelul de comandă. Puteți utiliza în siguranță o întrerupere în orice moment, deoarece GDB nu permite ca aceasta să intre în vigoare înainte de a fi în siguranță.

Dacă utilizați GDB pentru a controla un proces sau dispozitiv atașat, îl puteți elibera cu comanda de detasare (a se vedea. Secțiunea 4.7 Debugging un proces deja de funcționare).

Dacă ați luat din greșeală pentru a executa comenzi shell în timpul sesiunii de depanare, nu are nici un sens să plece sau să suspende GDB; utilizați doar comanda shell. șir de comandă shell Invoca un shell standard, pentru a executa linia de comandă. Mediul SHELL variabil. dacă există, aceasta stabilește care shell pentru a rula. În caz contrar, GDB utilizează shell-ul implicit ( `/ bin / sh 'pe sisteme Unix,` COMMAND.COM' în MS-DOS, și așa mai departe).

Mediul de dezvoltare este adesea necesar să se folosească marca de utilitate. În acest scop, nu este nevoie să utilizați comanda shell în GDB: face make-args Execută programul face cu argumentele specificate. Acest lucru este echivalent cu `shell make make-args.