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