GNU Debugger

Den stabila versionen checkades ut den 24 september 2022 . Det finns overifierade ändringar i mallar eller .
GNU Debugger
Sorts debugger och GNU-paket [d]
Författare GNU-projekt
Utvecklaren gemenskap
Skrivet i C och Schema
Operativ system GNU/Linux [3] , BSD [3] , Microsoft Windows [3] och macOS [3]
Gränssnittsspråk engelsk
Första upplagan 1986 [1]
senaste versionen
Licens GPL 3.0+ [3]
Hemsida gnu.org/software/… ​(  engelska)
 Mediafiler på Wikimedia Commons

GNU Debugger  är en bärbar GNU -projektfelsökning som körs på många UNIX -liknande system och kan felsöka många programmeringsspråk, inklusive C , C++ , Free Pascal , FreeBASIC , Ada , Fortran och Rust . GDB är fri programvara licensierad under GPL .

Historik

Ursprungligen skriven 1988 av Richard Stallman . Den var baserad på DBX-felsökningen som följde med BSD- distributionen . Från 1990 till 1993  _ projektet fick stöd av John Gilmour medan han var hos Cygnus Solutions . Utvecklingen koordineras för närvarande av GDB-styrkommittén som utsetts av Free Software Foundation . [fyra]

Utgivningshistorik

Tekniska detaljer

Funktioner

GDB erbjuder omfattande verktyg för att övervaka och kontrollera exekveringen av datorprogram. Användaren kan ändra de interna variablerna för program och till och med anropa funktioner, oavsett programmets normala beteende. GDB kan felsöka körbara filer i formatet a.out , COFF (inklusive Windows körbara filer), ECOFF , XCOFF , ELF , SOM , använd felsökningsinformation i formaten stabs , COFF , ECOFF , DWARF , DWARF2 [6] . DWARF2-formatet ger de bästa felsökningsmöjligheterna.

GDB utvecklas aktivt. Till exempel har version 7.0 lagt till stöd för "reversibel debugging", vilket gör att du kan spola tillbaka exekveringsprocessen för att se vad som hände. Även i version 7.0 lades stöd för Python -skript till .

Andra felsökningsverktyg har skapats för att fungera med GDB, såsom minnesläckagedetektorer.[ specificera ] .

Stöd för flera plattformar och inbyggda system

GDB kan kompileras för att stödja applikationer för flera målplattformar och växla mellan dem under en felsökningssession. Processorer som stöds av GDB ( 2003 ): Alpha , ARM , H8/300 , System/370 , System/390 , x86 och 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 MN 10200 MN 10200 MN 10200 NS 5 , Y Z8000 (Nyere utgåvor kommer förmodligen inte att stödja vissa av dessa.) Målplattformar där GDB inte kan köras, i synnerhet inbyggda system , kan stödjas med hjälp av den inbyggda simulatorn ( ARM , AVR -processorer ) eller applikationer för dem kan kompileras med speciella rutiner som ger fjärrfelsökning under kontroll av GDB som körs på utvecklarens dator. Indatafilen för felsökning är som regel inte en flashbar binär fil, utan en fil i ett av formaten som stöder felsökningsinformation, främst ELF, från vilken den binära koden för flashning sedan extraheras med hjälp av speciella verktyg.

Fjärrfelsökning

Med fjärrfelsökning körs GDB på en maskin och programmet som felsöks körs på en annan. Kommunikation utförs enligt ett speciellt protokoll via en seriell port eller TCP/IP. Protokollet för att interagera med felsökaren är specifikt för GDB, men källkoden för de nödvändiga subrutinerna ingår i felsökningsarkivet. Alternativt kan programmet gdbserver [7] från GDB-paketet som använder samma protokoll köras på målplattformen för att utföra lågnivåfunktioner som att ställa in brytpunkter och komma åt register och minne.

Samma läge används för att interagera med den inbyggda Linux- kärnfelsökaren KGDB. Med den kan en utvecklare felsöka kärnan som ett vanligt program: ställa in brytpunkter, stega igenom koden, visa variabler. Den inbyggda debuggern kräver två maskiner anslutna via Ethernet eller en seriell kabel, en som kör GDB och den andra som kör kärnan för att felsökas.

Användargränssnitt

I enlighet med ideologin hos de ledande FSF- utvecklarna [8] ger GDB, istället för sitt eget grafiska användargränssnitt, möjligheten att ansluta till externa IDE:er som styr grafiska skal eller använder ett standardgränssnitt för konsoltext. För att samverka med externa program kan du använda ett textsträngsspråk (som gjordes i de första versionerna av DDD- skalet ), ett textkontrollspråk gdb/mieller ett gränssnitt till Python-språket .

Gränssnitt som DDD , cgdb , GDBtk/Insight och "GUD mode" i Emacs skapades . IDE som kan interagera med GDB är Code::Blocks , Qt Creator , KDevelop , Eclipse , NetBeans , Lazarus , Geany .

Kommandoexempel

gdb-program felsöka programmet "program" (från kommandoskalet)
bryta huvud ställ in en brytpunkt på main
köra -v kör det nedladdade programmet med alternativet -v
bt bakåtspårning (vid programkrasch)
info register visa alla register
disass $pc-32, $pc+32 plocka isär koden
demontera huvudet demontera huvudfunktionen
set demontering-smak intel visa assembler-kommandon i intel-syntax

Användningsexempel

GNU gdb 6.5 Copyright (C) 2006 Free Software Foundation, Inc. GDB är fri programvara, täckt av GNU General Public License, och det är du välkommen att ändra den och/eller distribuera kopior av den under vissa förutsättningar. Skriv "visa kopiering" för att se villkoren. Det finns absolut ingen garanti för GDB. Skriv "visa garanti" för detaljer. Denna GDB konfigurerades som "i486-slackware-linux". (gdb) köra Startprogram: /home/sam/programming/crash Läsning av symboler från delat objekt läst från målminnet...klar. Laddat system levereras DSO vid 0xc11000 Detta program kommer att demonstrera gdb Program mottagen signal SIGSEGV, Segmenteringsfel. 0x08048428 i function_2 (x=24) vid crash.c:22 22 returnera *y; (gdb) redigera (gdb) skal gcc crash.c -o krasch -gstabs+ (gdb) köra Programmet som felsöks har redan startats. Börja det från början? (y eller n) y varning: kan inte stänga "delat objekt läst från målminnet": Fil i fel format `/home/sam/programming/crash' har ändrats; återläsning av symboler. Startprogram: /home/sam/programming/crash Läsning av symboler från delat objekt läst från målminnet...klar. Laddat system levereras DSO vid 0xa3e000 Detta program kommer att demonstrera gdb 24 Programmet avslutades normalt. (gdb) sluta

Efter att orsaken till segmenteringsfelet hittats, redigeras programmet, felet korrigeras. Det korrigerade programmet byggs om med GCC och körs.

Nackdelar

Inbyggda systemsimulatorer som ingår i GDB, särskilt för AVR- plattformen , kan bara stödja processorkärnan, men inte kringutrustningen för styrenheten.

Anteckningar

  1. Richard Stallman föreläsning vid Kungliga Tekniska Högskolan, Sverige (1986-10-30)
  2. Brobecker J. GDB 12.1 släppt!  (engelska) - 2022.
  3. 1 2 3 4 5 Gratis programvarukatalog
  4. GDB:s styrkommitté (länk ej tillgänglig) . Hämtad 11 maj 2008. Arkiverad från originalet 5 augusti 2012. 
  5. GDB News . Hämtad 7 juli 2012. Arkiverad från originalet 23 juli 2012.
  6. gdb Internals - Symbolhantering . Hämtad 15 maj 2020. Arkiverad från originalet 22 september 2020.
  7. Fjärrfelsökning med GDB och GDBserver . Hämtad 9 maj 2022. Arkiverad från originalet 12 augusti 2021.
  8. Eric Raymond: Konsten att programmera Unix ISBN 5-8459-0791-8

Litteratur

Länkar