Startpagina > Omgeving & hulpmiddelen > gdb

gdb: GNU Debugger

gdb (GNU Debugger) is a powerful tool for analyzing and debugging programs written in various programming languages such as C, C++, and Fortran. It is essential for understanding the internal workings of a program and for finding and fixing bugs. It supports various debugging scenarios, such as attaching to a running process or analyzing core files.

Overzicht

gdb biedt diepgaande debugging-functionaliteit, zoals het beheersen van de uitvoeringsstroom van een programma, het inspecteren van variabele waarden en het controleren van de geheugenstatus. Het is bijzonder nuttig voor het analyseren van problemen in gecompileerde binaire bestanden.

Belangrijkste functies

  • Starten/stoppen van een draaiend programma
  • Instellen van breakpoints
  • Inspecteren en wijzigen van variabele waarden
  • Controleren van stack traces
  • Inspecteren van geheugeninhoud
  • Analyseren van core-bestanden

Belangrijkste opties

gdb wordt meestal interactief gebruikt, maar u kunt specifieke opties gebruiken bij het starten om initiële instellingen te configureren of niet-interactieve scripts uit te voeren.

Start-/verbindingsopties

Gegenereerde opdracht:

Probeer de opdrachtcombinaties.

Uitleg:

`gdb` Voer het commando uit.

Combineer deze opties en voer de opdracht virtueel uit met de AI.

Gebruiksvoorbeelden

gdb wordt vaak interactief gebruikt, dus de voorbeelden bevatten ook commando's die binnen de gdb-prompt worden ingevoerd.

Basis debugging-sessie starten

gdb ./my_program

Start een debugging-sessie door het gecompileerde programma (bijv. my_program) in gdb te laden.

Breakpoint instellen en uitvoeren

gdb ./my_program
(gdb) b main
(gdb) r

Stelt een breakpoint in de main-functie en voert het programma uit. De uitvoering stopt bij de breakpoint.

Variabele waarde controleren

gdb ./my_program
(gdb) b my_function
(gdb) r
(gdb) p my_variable

Na het stoppen bij een breakpoint, wordt de huidige waarde van een specifieke variabele weergegeven.

Core-bestand analyseren

gdb ./my_program core.dump

Analyseert een core-bestand gegenereerd door een programma-crash om de status van het programma op het moment van de crash te onderzoeken.

Verbinden met een draaiend proces

gdb -p 12345

Verbindt gdb met proces-ID (PID) 12345, dat al draait, om te debuggen.

Automatisch commando uitvoeren bij start

gdb -ex 'b main' -ex 'r' ./my_program

Stelt een breakpoint in de main-functie en voert het programma uit direct na het starten van gdb.

Installatie

gdb is niet standaard beschikbaar op de meeste Linux-distributies en moet worden geïnstalleerd als onderdeel van de development tools-pakketten.

Debian/Ubuntu

sudo apt update && sudo apt install gdb

Installeert gdb met behulp van de APT-pakketbeheerder.

Fedora/CentOS/RHEL

sudo dnf install gdb

Installeert gdb met behulp van de DNF- of YUM-pakketbeheerder.

Tips & Aandachtspunten

Tips en aandachtspunten voor het effectief gebruiken van gdb.

Debug-informatie opnemen tijdens het compileren

Om te debuggen met gdb, moet u het programma compileren met de `-g` optie om debug-informatie op te nemen. Anders kunt u de broncode-informatie of variabelenamen niet zien.

  • Voorbeeld: `gcc -g myprogram.c -o myprogram`

Veelgebruikte gdb-commando's

Dit zijn de belangrijkste commando's die vaak worden gebruikt binnen de gdb-prompt.

  • `b <functie/regelnummer>`: Stel een breakpoint in
  • `r`: Voer het programma uit (run)
  • `n`: Ga naar de volgende regel (next)
  • `s`: Ga een functie binnen (step)
  • `p <variabele>`: Toon de waarde van een variabele (print)
  • `c`: Ga door tot de volgende breakpoint (continue)
  • `q`: Sluit gdb af (quit)

Gebruik van TUI-modus

Door gebruik te maken van de Text User Interface (TUI) modus van gdb, kunt u de efficiëntie van het debuggen verhogen door de broncode, registers en assembly tegelijkertijd te bekijken.

  • `gdb -tui <programma>` of gebruik het commando `layout src` binnen gdb

Hétzelfde categoriecommando