GNU Debugger
GNU Debugger | ||||
---|---|---|---|---|
![]() | ||||
![]() | ||||
Ontwikkelaar(s) | GNU Project | |||
Uitgebracht | 1986 (37 jaar) | |||
Recentste versie | 15.1 (7 juli 2024)[1] ![]() | |||
Status | Actief | |||
Besturingssysteem | GNU/Linux, BSD, Microsoft Windows, macOS | |||
Geschreven in | C, Scheme | |||
Categorie | Debugger | |||
Licentie(s) | GPL-3.0+ | |||
Versiebeheer | Officiële broncode | |||
Website | Officiële website | |||
|
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
- 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
- ↑ GDB 15.1 released! (7 juli 2024). Geraadpleegd op 9 juli 2024.
- ↑ GDB Documentation - Supported Languages. Gearchiveerd op 28 december 2017. Geraadpleegd op 28 november 2011.
- ↑ GDB Documentation - Summary. Gearchiveerd op 1 juli 2012. Geraadpleegd op 28 november 2011.
- ↑ 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.”
- ↑ GDB Steering Committee. Gearchiveerd op 25 juni 2008. Geraadpleegd op 11 mei 2008.
- ↑ GDB 7.0 Release Notes. Gearchiveerd op 23 december 2011. Geraadpleegd op 28 november 2011.
- ↑ Joel Brobecker, GDB 7.8 released! (29 juli 2014). Gearchiveerd op 30 juli 2014. Geraadpleegd op 30 juli 2014.
- ↑ Reverse Debugging with GDB. Gearchiveerd op 5 januari 2014. Geraadpleegd op 20 januari 2014.
- ↑ Howto: GDB Remote Serial Protocol: Writing a RSP Server. Gearchiveerd op 11 juni 2022.
- ↑ Kernel debugging with Dcons. Gearchiveerd op 25 oktober 2020.