Aperçu
gdb offre des fonctionnalités de débogage approfondies, notamment le contrôle du flux d'exécution du programme, l'inspection des valeurs des variables et la vérification de l'état de la mémoire. Il est particulièrement utile pour analyser les problèmes dans les fichiers binaires compilés.
Fonctionnalités principales
- Démarrer/arrêter un programme en cours d'exécution
- Définir des points d'arrêt (breakpoint)
- Inspecter et modifier les valeurs des variables
- Vérifier la trace de la pile (stack trace)
- Inspecter le contenu de la mémoire
- Analyser les fichiers core
Options principales
gdb est principalement utilisé en mode interactif, mais vous pouvez définir des paramètres initiaux ou exécuter des scripts non interactifs via des options spécifiques au démarrage.
Options de démarrage/connexion
Commande générée :
Essayez de combiner les commandes.
Description:
`gdb` Exécute la commande.
Essayez d'exécuter virtuellement les commandes avec l'IA en combinant les options ci-dessus.
Exemples d'utilisation
gdb est souvent utilisé de manière interactive, donc les exemples incluent également les commandes saisies dans l'invite gdb.
Démarrer une session de débogage de base
gdb ./my_program
Charge le programme compilé (par exemple, my_program) avec gdb pour démarrer une session de débogage.
Définir un point d'arrêt et exécuter
gdb ./my_program
(gdb) b main
(gdb) r
Définit un point d'arrêt dans la fonction main et exécute le programme. L'exécution s'arrête au point d'arrêt.
Vérifier la valeur d'une variable
gdb ./my_program
(gdb) b my_function
(gdb) r
(gdb) p my_variable
Après l'arrêt au point d'arrêt, affiche la valeur actuelle d'une variable spécifique.
Analyser un fichier core
gdb ./my_program core.dump
Analyse le fichier core généré par un crash de programme pour examiner l'état du programme au moment du crash.
Se connecter à un processus en cours d'exécution
gdb -p 12345
Connecte gdb au processus avec l'ID de processus (PID) 12345 en cours d'exécution pour le débogage.
Exécuter automatiquement des commandes au démarrage
gdb -ex 'b main' -ex 'r' ./my_program
Définit un point d'arrêt dans la fonction main et exécute le programme simultanément au démarrage de gdb.
Installation
gdb n'est pas fourni par défaut dans la plupart des distributions Linux et doit être installé dans le cadre des paquets d'outils de développement.
Debian/Ubuntu
sudo apt update && sudo apt install gdb
Installe gdb en utilisant le gestionnaire de paquets APT.
Fedora/CentOS/RHEL
sudo dnf install gdb
Installe gdb en utilisant le gestionnaire de paquets DNF ou YUM.
Conseils et précautions
Conseils et précautions pour utiliser gdb efficacement.
Inclure les informations de débogage lors de la compilation
Pour déboguer avec gdb, vous devez compiler le programme avec l'option `-g` pour inclure les informations de débogage. Sinon, vous ne pourrez pas voir les informations du code source ou les noms des variables.
- Exemple : `gcc -g myprogram.c -o myprogram`
Commandes gdb fréquemment utilisées
Commandes clés fréquemment utilisées dans l'invite gdb.
- `b <nom_fonction/num_ligne>` : Définir un point d'arrêt (breakpoint)
- `r` : Exécuter le programme (run)
- `n` : Passer à la ligne suivante (next)
- `s` : Entrer dans une fonction (step)
- `p <nom_variable>` : Afficher la valeur d'une variable (print)
- `c` : Continuer jusqu'au prochain point d'arrêt (continue)
- `q` : Quitter gdb (quit)
Utiliser le mode TUI
L'utilisation du mode Interface Utilisateur Texte (TUI) de gdb vous permet d'améliorer l'efficacité du débogage en visualisant simultanément le code source, les registres, l'assembleur, etc.
- `gdb -tui <programme>` ou utiliser la commande `layout src` dans gdb