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 .
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]
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 ] .
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.
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.
Î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 .
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 |
După ce se găsește cauza erorii de segmentare , programul este editat, eroarea este corectată. Programul corectat este reconstruit cu GCC și rulat.
Simulatoarele de sistem încorporate incluse în GDB, în special pentru platforma AVR , pot suporta doar nucleul procesorului, dar nu și perifericele controlerului.
Proiectul GNU | ||
---|---|---|
Poveste | ||
Licențe |
| |
software _ |
| |
Personalități |
| |
Alte subiecte |
|