GNU Debugger

Versiunea stabilă a fost verificată pe 24 septembrie 2022 . Există modificări neverificate în șabloane sau .
GNU Debugger
Tip de depanator și pachet GNU [d]
Autor proiect GNU
Dezvoltator comunitate
Scris in C și Scheme
Sistem de operare GNU/Linux [3] , BSD [3] , Microsoft Windows [3] și macOS [3]
Limbi de interfață Engleză
Prima editie 1986 [1]
ultima versiune
Licență GPL 3.0+ [3]
Site-ul web gnu.org/software/… ​(  engleză)
 Fișiere media la Wikimedia Commons

GNU Debugger este un depanator  portabil de proiecte GNU care rulează pe multe sisteme asemănătoare UNIX și poate depana multe limbaje de programare, inclusiv C , C++ , Free Pascal , FreeBASIC , Ada , Fortran și Rust . GDB este un software liber licențiat sub GPL .

Istorie

Scrisă inițial în 1988 de Richard Stallman . S-a bazat pe depanatorul DBX care a venit cu distribuția BSD . Din 1990 până în 1993  _ proiectul a fost susținut de John Gilmour în timp ce acesta a fost cu Cygnus Solutions . Dezvoltarea este în prezent coordonată de Comitetul Director GDB numit de Free Software Foundation . [patru]

Istoricul lansărilor

Detalii tehnice

Caracteristici

GDB oferă instrumente extinse pentru monitorizarea și controlul execuției programelor de calculator. Utilizatorul poate modifica variabilele interne ale programelor și chiar poate apela funcții, indiferent de comportamentul normal al programului. GDB poate depana fișierele executabile în format a.out , COFF (inclusiv fișierele executabile Windows), ECOFF , XCOFF , ELF , SOM , poate folosi informațiile de depanare în formatele stabs , COFF , ECOFF , DWARF , DWARF2 [6] . Formatul DWARF2 oferă cele mai mari capacități de depanare.

GDB este dezvoltat activ. De exemplu, versiunea 7.0 a adăugat suport pentru „depanare reversibilă”, care vă permite să derulați înapoi procesul de execuție pentru a vedea ce s-a întâmplat. De asemenea, în versiunea 7.0, a fost adăugat suport pentru scripting Python .

Alte instrumente de depanare au fost create pentru a funcționa cu GDB, cum ar fi detectoare de scurgeri de memorie.[ specificați ] .

Suport pentru sisteme multiplatforme și încorporate

GDB poate fi compilat pentru a suporta aplicații pentru mai multe platforme țintă și pentru a comuta între ele în timpul unei sesiuni de depanare. Procesoare acceptate de GDB ( 2003 ): Alpha , ARM , H8/300 , System/370 , System/390 , x86 și x86-64 , IA-64 ( Itanium ), Motorola 68000 , MIPS , PA-RISC , PowerPC , SuperH , SPARC , VAX , A29K , ARC , AVR , CRIS , D10V , D30V , FR-30 , FR-V , Intel i960 , M32R , 68HC11 , Motorola 88000 , MCORE , MN10200 , MN10200 , MN10200 , MN10832K0 , MN10832K0 , MN10832K0 , MN10832K0 Z8000 (Versiunile mai noi probabil că nu vor accepta unele dintre acestea.) Platformele țintă pe care GDB nu poate fi rulat, în special sistemele încorporate , pot fi acceptate folosind simulatorul încorporat ( procesoare ARM , AVR ) sau aplicațiile pentru acestea pot fi compilate cu rutine speciale care oferă depanare la distanță sub controlul GDB care rulează pe computerul dezvoltatorului. Fișierul de intrare pentru depanare, de regulă, nu este un fișier binar flashabil, ci un fișier într-unul dintre formatele care acceptă informații de depanare, în primul rând ELF, din care codul binar pentru flashing este ulterior extras folosind utilități speciale.

Depanare la distanță

Cu depanarea de la distanță, GDB este rulat pe o mașină, iar programul care este depanat este rulat pe alta. Comunicarea se realizează conform unui protocol special printr-un port serial sau TCP / IP. Protocolul de interacțiune cu depanatorul este specific GDB, dar codul sursă pentru subrutinele necesare este inclus în arhiva depanatorului. Alternativ, programul gdbserver [7] din pachetul GDB folosind același protocol poate fi rulat pe platforma țintă pentru a efectua funcții de nivel scăzut, cum ar fi setarea punctelor de întrerupere și accesarea registrelor și memoriei.

Același mod este folosit pentru a interacționa cu depanatorul de kernel Linux KGDB încorporat. Cu el, un dezvoltator poate depana nucleul ca un program normal: setați puncte de întrerupere, parcurgeți codul, vizualizați variabilele. Depanatorul încorporat necesită două mașini conectate prin Ethernet sau un cablu serial, unul rulând GDB și celălalt rulând nucleul pentru a fi depanat.

Interfata utilizator

În conformitate cu ideologia dezvoltatorilor de frunte FSF [8] , în loc de propria sa interfață grafică cu utilizatorul, GDB oferă posibilitatea de a se conecta la IDE -uri externe care controlează shell-uri grafice sau utilizează o interfață text standard de consolă. Pentru a interfața cu programe externe, puteți utiliza un limbaj cu șir de text (cum s-a făcut în primele versiuni ale shell-ului DDD ), un limbaj de control al textului gdb/misau o interfață cu limbajul Python .

Au fost create interfețe precum DDD , cgdb , GDBtk/Insight și „GUD mode” în Emacs . IDE -urile care pot interacționa cu GDB sunt Code::Blocks , Qt Creator , KDevelop , Eclipse , NetBeans , Lazarus , Geany .

Exemple de comenzi

program gdb depanați programul „program” (din shell-ul de comandă)
rupe principal setați un punct de întrerupere pe principal
alerga -v rulați programul descărcat cu opțiunea -v
bt backtrace (în caz de blocare a programului)
registrele de informații arata toate registrele
diss $buc-32, $buc+32 dezasambla codul
dezasamblați principal dezasamblați funcția principală
set dezasamblare-aromă intel afișați comenzile asamblatorului în sintaxa intel

Exemplu de utilizare

GNU gdb 6.5 Drepturi de autor (C) 2006 Free Software Foundation, Inc. GDB este un software gratuit, acoperit de Licența publică generală GNU, iar dvs. sunteți binevenit să îl modificați și/sau să distribuiți copii ale acestuia în anumite condiții. Tastați „afișați copierea” pentru a vedea condițiile. Nu există absolut nicio garanție pentru GDB. Introduceți „afișați garanția” pentru detalii. Acest GDB a fost configurat ca „i486-slackware-linux”. (gdb) alerga Program de pornire: /home/sam/programming/crash Citirea simbolurilor din obiectul partajat citit din memoria țintă... gata. Sistemul încărcat a furnizat DSO la 0xc11000 Acest program va demonstra gdb Semnal recepţionat program SIGSEGV, Eroare de segmentare. 0x08048428 în funcția_2 (x=24) la crash.c:22 22 return *y; (gdb) edita (gdb) shell gcc crash.c -o crash -gstabs+ (gdb) alerga Programul care este depanat a fost deja pornit. Începeți de la început? (y sau n) y avertisment: nu se poate închide „obiect partajat citit din memoria țintă”: fișier în format greșit `/home/sam/programming/crash' s-a schimbat; recitirea simbolurilor. Program de pornire: /home/sam/programming/crash Citirea simbolurilor din obiectul partajat citit din memoria țintă... gata. Sistemul încărcat a furnizat DSO la 0xa3e000 Acest program va demonstra gdb 24 Programul a ieșit normal. (gdb) renunță

După ce se găsește cauza erorii de segmentare , programul este editat, eroarea este corectată. Programul corectat este reconstruit cu GCC și rulat.

Dezavantaje

Simulatoarele de sistem încorporate incluse în GDB, în special pentru platforma AVR , pot suporta doar nucleul procesorului, dar nu și perifericele controlerului.

Note

  1. Richard Stallman prelegere la Institutul Regal de Tehnologie, Suedia (30-10-1986)
  2. Brobecker J. GDB 12.1 lansat!  (engleză) - 2022.
  3. 1 2 3 4 5 Director de software gratuit
  4. Comitetul de conducere al GDB (link nu este disponibil) . Preluat la 11 mai 2008. Arhivat din original la 5 august 2012. 
  5. Știri GDB . Preluat la 7 iulie 2012. Arhivat din original la 23 iulie 2012.
  6. gdb Internal - Manipularea simbolurilor . Preluat la 15 mai 2020. Arhivat din original la 22 septembrie 2020.
  7. Depanare la distanță cu GDB și GDBserver . Preluat la 9 mai 2022. Arhivat din original la 12 august 2021.
  8. Eric Raymond: Arta programării Unix ISBN 5-8459-0791-8

Literatură

Link -uri