accueil > Environnement & utilitaires > gdb

gdb : Le débogueur GNU

gdb (GNU Debugger) est un outil puissant pour analyser et déboguer l'exécution de programmes écrits dans divers langages de programmation tels que C, C++, Fortran. Il est essentiel pour comprendre le fonctionnement interne des programmes et pour trouver et corriger les bugs. Il prend en charge divers scénarios de débogage, tels que la connexion à un processus en cours d'exécution ou l'analyse de fichiers core.

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

Commandes de la même catégorie