GNU Debugger

Den stabile version blev tjekket ud den 24. september 2022 . Der er ubekræftede ændringer i skabeloner eller .
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 .

Historie

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]

Udgivelseshistorik

Tekniske detaljer

Funktioner

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 ] .

Understøttelse af flere platforme og indlejrede systemer

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.

Fjernfejlfinding

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.

Brugergrænseflade

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 .

Kommandoeksempler

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

Eksempel på brug

GNU gdb 6.5 Copyright (C) 2006 Free Software Foundation, Inc. GDB er gratis software, dækket af GNU General Public License, og det er du velkommen til at ændre det og/eller distribuere kopier af det under visse betingelser. Skriv "vis kopiering" for at se betingelserne. Der er absolut ingen garanti for GDB. Skriv "vis garanti" for detaljer. Denne GDB blev konfigureret som "i486-slackware-linux". (gdb) køre Startprogram: /home/sam/programming/crash Læsning af symboler fra delt objekt læst fra målhukommelsen ... udført. Belastet system forsynet DSO ved 0xc11000 Dette program vil demonstrere gdb Program modtaget signal SIGSEGV, Segmenteringsfejl. 0x08048428 i function_2 (x=24) ved crash.c:22 22 returnere *y; (gdb) rediger (gdb) shell gcc crash.c -o crash -gstabs+ (gdb) køre Programmet, der fejlsøges, er allerede startet. Starte det fra begyndelsen? (y eller n) y advarsel: kan ikke lukke "delt objekt læst fra målhukommelsen": Fil i forkert format `/home/sam/programming/crash' har ændret sig; genlæse symboler. Startprogram: /home/sam/programming/crash Læsning af symboler fra delt objekt læst fra målhukommelsen ... udført. Belastet system forsynet DSO ved 0xa3e000 Dette program vil demonstrere gdb 24 Programmet afsluttes normalt. (gdb) afslutte

Efter at årsagen til segmenteringsfejlen er fundet, redigeres programmet, fejlen rettes. Det rettede program genopbygges med GCC og køres.

Ulemper

Indlejrede systemsimulatorer inkluderet i GDB, især til AVR -platformen , kan kun understøtte processorkernen, men ikke controllerens periferiudstyr.

Noter

  1. Richard Stallman foredrag ved Royal Institute of Technology, Sverige (1986-10-30)
  2. Brobecker J. GDB 12.1 udgivet!  (engelsk) - 2022.
  3. 1 2 3 4 5 Gratis softwarekatalog
  4. GDB Steering Committee (link ikke tilgængeligt) . Hentet 11. maj 2008. Arkiveret fra originalen 5. august 2012. 
  5. GDB Nyheder . Hentet 7. juli 2012. Arkiveret fra originalen 23. juli 2012.
  6. gdb Internals - Symbolhåndtering . Hentet 15. maj 2020. Arkiveret fra originalen 22. september 2020.
  7. Fjernfejlfinding med GDB og GDBserver . Hentet 9. maj 2022. Arkiveret fra originalen 12. august 2021.
  8. Eric Raymond: Kunsten at Unix-programmering ISBN 5-8459-0791-8

Litteratur

Links