GNU Debugger | |
---|---|
Type | debugger og GNU-pakke [d] |
Forfatter | GNU projekt |
Udvikler | fællesskab |
Skrevet i | C og skema |
Operativ system | GNU/Linux [3] , BSD [3] , Microsoft Windows [3] og macOS [3] |
Interface sprog | engelsk |
Første udgave | 1986 [1] |
nyeste version | |
Licens | GPL 3.0+ [3] |
Internet side | gnu.org/software/… ( engelsk) |
Mediefiler på Wikimedia Commons |
GNU Debugger er en bærbar GNU - projekt -debugger , der kører på mange UNIX -lignende systemer og kan debugge mange programmeringssprog, inklusive C , C++ , Free Pascal , FreeBASIC , Ada , Fortran og Rust . GDB er gratis software licenseret under GPL .
Oprindeligt skrevet i 1988 af Richard Stallman . Det var baseret på DBX- debuggeren, der fulgte med BSD- distributionen . Fra 1990 til 1993 _ projektet blev støttet af John Gilmour , mens han var hos Cygnus Solutions . Udviklingen koordineres i øjeblikket af GDB-styregruppen, der er udpeget af Free Software Foundation . [fire]
GDB tilbyder omfattende værktøjer til overvågning og kontrol af eksekveringen af computerprogrammer. Brugeren kan ændre de interne variabler i programmer og endda kalde funktioner, uanset programmets normale opførsel. GDB kan debugge eksekverbare filer i a.out , COFF format (inklusive Windows eksekverbare filer), ECOFF , XCOFF , ELF , SOM , bruge debug information i stabs , COFF , ECOFF , DWARF , DWARF2 [6] formater . DWARF2-formatet giver de største fejlfindingsmuligheder.
GDB er aktivt udviklet. For eksempel tilføjede version 7.0 understøttelse af "reversibel debugging", som giver dig mulighed for at spole eksekveringsprocessen tilbage for at se, hvad der skete. Også i version 7.0 blev understøttelse af Python- scripting tilføjet .
Andre fejlfindingsværktøjer er blevet skabt til at arbejde med GDB, såsom hukommelseslækagedetektorer.[ angiv ] .
GDB kan kompileres til at understøtte applikationer til flere målplatforme og skifte mellem dem under en debugsession. Processorer understøttet af GDB ( 2003 ): Alpha , ARM , H8/300 , System/370 , System/390 , x86 og 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 MN 10200 NS 5 , -Y Z8000 (Nyere udgivelser vil sandsynligvis ikke understøtte nogle af disse.) Målplatforme, hvor GDB ikke kan køres, især indlejrede systemer , kan understøttes ved hjælp af den indbyggede simulator ( ARM , AVR -processorer ) eller applikationer til dem kan kompileres med særlige rutiner, der giver fjernfejlfinding under kontrol af GDB, der kører på udviklerens computer. Inputfilen til debugging er som udgangspunkt ikke en flashbar binær fil, men en fil i et af de formater, der understøtter debugging information, primært ELF, hvorfra den binære kode til flashing efterfølgende udtrækkes ved hjælp af specielle hjælpeprogrammer.
Med fjernfejlfinding køres GDB på én maskine, og programmet, der debugges, køres på en anden. Kommunikation udføres i henhold til en speciel protokol gennem en seriel port eller TCP/IP. Protokollen til at interagere med debuggeren er specifik for GDB, men kildekoden til de nødvendige underrutiner er inkluderet i debugger-arkivet. Alternativt kan gdbserver [7] -programmet fra GDB-pakken ved hjælp af den samme protokol køres på målplatformen for at udføre lavniveau-funktioner såsom indstilling af breakpoints og adgang til registre og hukommelse.
Den samme tilstand bruges til at interagere med den indbyggede Linux- kernedebugger KGDB. Med det kan en udvikler debugge kernen som et normalt program: sæt brudpunkter, trin gennem koden, se variabler. Den indbyggede debugger kræver to maskiner forbundet via Ethernet eller et serielt kabel, den ene kører GDB og den anden kører kernen for at blive fejlrettet.
I overensstemmelse med ideologien fra de førende FSF -udviklere [8] giver GDB i stedet for sin egen grafiske brugergrænseflade mulighed for at oprette forbindelse til eksterne IDE'er , der styrer grafiske skaller eller bruger en standard konsoltekstgrænseflade. For at interface med eksterne programmer kan du bruge et tekststrengsprog (som det blev gjort i de første versioner af DDD -skallen ), et tekstkontrolsprog gdb/mieller en grænseflade til Python-sproget .
Interfaces såsom DDD , cgdb , GDBtk/Insight og "GUD mode" i Emacs blev oprettet . IDE'er , der kan interagere med GDB, er Code::Blocks , Qt Creator , KDevelop , Eclipse , NetBeans , Lazarus , Geany .
gdb program | debug programmet "program" (fra kommandoskallen) |
---|---|
bryde hoved | indstil et brudpunkt på main |
køre -v | kør det downloadede program med muligheden -v |
bt | tilbagesporing (i tilfælde af programnedbrud) |
info registre | vise alle registre |
disass $pc-32, $pc+32 | skille koden ad |
skille hovedet ad | adskille hovedfunktion |
sæt demontering-smag intel | vis assembler-kommandoer i intel-syntaks |
Efter at årsagen til segmenteringsfejlen er fundet, redigeres programmet, fejlen rettes. Det rettede program genopbygges med GCC og køres.
Indlejrede systemsimulatorer inkluderet i GDB, især til AVR -platformen , kan kun understøtte processorkernen, men ikke controllerens periferiudstyr.
GNU projekt | ||
---|---|---|
Historie | ||
Licenser |
| |
Software _ |
| |
Personligheder |
| |
Andre emner |
|