GNU Debugger

GNU Debugger
Logo
GNU Debugger
Ontwikkelaar(s) GNU Project
Uitgebracht 1986 (37 jaar)
Recentste versie 14.2 (3 maart 2024)[1] Bewerken op Wikidata
Status Actief
Besturingssysteem GNU/Linux, BSD, Microsoft Windows, macOS
Geschreven in C, Scheme
Categorie Debugger
Licentie(s) GPL-3.0+
Versiebeheer
  • sourceware.org/git/binutils-gdb.git Bewerk dit op Wikidata
Website Officiële website
Portaal  Portaalicoon   Informatica
Vrije software

De GNU Debugger (GDB) is een debugger voor Unix-achtige systemen met ondersteuning voor een groot aantal programmeertalen, waaronder Ada, assembly, C, C++, D, Objective-C, Free Pascal, Fortran, Modula-2 en Rust.[2][3]

Geschiedenis

De ontwikkeling aan GDB werd in 1986 gestart door Richard Stallman als onderdeel van zijn GNU-systeem, nadat hij GNU Emacs (zie Emacs) "relatief stabiel" vond.[4] GDB is vrije software die verspreid wordt onder de GNU General Public License (GPL). De GNU Debugger is ontworpen naar het voorbeeld van de DBX-debugger die meegeleverd werd met Berkeley Unix-distributies.[4]

De GNU Debugger wordt onderhouden door de GDB-stuurgroep (GDB Steering Committee) dat samengesteld wordt door de Free Software Foundation.[5]

Technische details

Features

GDB biedt uitgebreide mogelijkheden voor het volgen en aanpassen van de uitvoering van computerprogramma's. De gebruiker kan de interne variabelen van een programma monitoren en aanpassen en functies aanroepen onafhankelijk van het normale gedrag.

GDB werkt op computers met zeer diverse instructiesets.

GDB wordt nog steeds actief ontwikkeld. In versie 7.0 werd onder meer ondersteuning voor Python-scripting toegevoegd.[6] In versie 7.8 werd GNU Guile-scripting toegevoegd.[7] Sinds versie 7.0 is er ook ondersteuning voor "achteruit debuggen". Dit houdt in dat er niet alleen naar de volgende stap gegaan kan worden in de code, maar ook naar de vorige. Dit kan bijvoorbeeld gebruikt worden om te kijken wat er gebeurde voordat een programma crashte.[8]

Remote debugging

GDB biedt een remote-modus, die gebruikt kan worden om embedded systemen te debuggen. Dit houdt in dat GDB draait op de eerste machine en dat het programma dat gedebugd wordt draait op een tweede machine. GDB kan communiceren met de remote module via het GDB-protocol. Hiervoor kan een seriële verbinding of een TCP/IP-verbinding gebruikt worden.[9]

Dezelfde modus wordt gebruikt door KGDB om een draaiende Linuxkernel te debuggen met gdb. Met KGDB kunnen kernelontwikkelaars een Linuxkernel op vrijwel dezelfde manier debuggen als computerprogramma's. KGDB maakt het mogelijk om breekpunten te plaatsen in kernelcode, door de code te lopen en variabelen te monitoren. Op architecturen waar hardware-registers bestaan, kunnen watchpoints gebruikt worden. Watchpoints kunnen breekpunten starten wanneer bepaalde geheugenadressen worden uitgevoerd of uitgelezen. KGDB heeft een extra machine nodig die verbonden is aan de machine die gedebugd moet worden. Deze verbinding kan serieel of via ethernet verlopen. Op FreeBSD is het daarnaast ook mogelijk om te debuggen via FireWire-direct memory access (DMA).[10]

Grafische gebruikersinterface

De debugger bevat geen eigen grafische gebruikersinterface en gebruikt standaard een command-line interface. Er zijn verschillende grafische gebruikersinterfaces (frontends) gebouwd voor gdb, zoals UltraGDB, Xxgdb, Data Display Debugger (DDD), Nemiver, KDbg, GDBtk/Insight en de HP Wildebeest Debugger GUI (WDB GUI).

IDE's zoals Codelite, Code::Blocks, Dev-C++, Geany, GNAT Programming Studio (GPS), KDevelop, Qt Creator, Lazarus, MonoDevelop, Eclipse, NetBeans, Xcode en Visual Studio hebben ondersteuning voor GDB. GNU Emacs heeft een "GUD mode" en gereedschappen voor VIM bestaan (bijvoorbeeld clewn). Deze gereedschappen bieden gelijkaardige functies aan debuggers ingebouwd in IDE's.

Er bestaan ook andere debugging-gereedschappen die integreren met GDB, zoals geheugenlekdetectors.

Externe links

  • (en) gdb op gnu.org
  • (en) Visual GDB - een Visual Studio-plugin voor gdb
Bronnen
  • Dit artikel of een eerdere versie ervan is een (gedeeltelijke) vertaling van het artikel GNU Debugger op de Engelstalige Wikipedia, dat onder de licentie Creative Commons Naamsvermelding/Gelijk delen valt. Zie de bewerkingsgeschiedenis aldaar.

Referenties

  1. GDB 14.2 released! (3 maart 2024). Geraadpleegd op 3 maart 2024.
  2. GDB Documentation - Supported Languages. Gearchiveerd op 28 december 2017. Geraadpleegd op 28 november 2011.
  3. GDB Documentation - Summary. Gearchiveerd op 1 juli 2012. Geraadpleegd op 28 november 2011.
  4. a b Richard Stallman lecture at the Royal Institute of Technology, Sweden (1986-10-30). Gearchiveerd op 5 oktober 2006. Geraadpleegd op 21 september 2006. "Then after GNU Emacs was reasonably stable, which took all in all about a year and a half, I started getting back to other parts of the system. I developed a debugger which I called GDB which is a symbolic debugger for C code, which recently entered distribution. Now this debugger is to a large extent in the spirit of DBX, which is a debugger that comes with Berkeley Unix."
  5. GDB Steering Committee. Gearchiveerd op 25 juni 2008. Geraadpleegd op 11 mei 2008.
  6. GDB 7.0 Release Notes. Gearchiveerd op 23 december 2011. Geraadpleegd op 28 november 2011.
  7. Joel Brobecker, GDB 7.8 released! (29 juli 2014). Gearchiveerd op 30 juli 2014. Geraadpleegd op 30 juli 2014.
  8. Reverse Debugging with GDB. Gearchiveerd op 5 januari 2014. Geraadpleegd op 20 januari 2014.
  9. Howto: GDB Remote Serial Protocol: Writing a RSP Server. Gearchiveerd op 11 juni 2022.
  10. Kernel debugging with Dcons. Gearchiveerd op 25 oktober 2020.