Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| gdb [Le 15/11/2010, 09:31] – hector | gdb [Le 19/03/2018, 11:55] (Version actuelle) – [Résumé des principales commandes] bcag2 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> | ||
| + | ---- | ||
| + | ====== Débuggage avec gdb ====== | ||
| + | |||
| + | ===== Description ===== | ||
| + | gdb, acronyme de GNU DeBugger, est un programme qui, comme son nom l' | ||
| + | |||
| + | Cet outil, indispensable à tout programmeur, | ||
| + | |||
| + | |||
| + | ===== Installation ===== | ||
| + | [[: | ||
| + | |||
| + | Si vous développez en utilisant une bibliothèque particulière, | ||
| + | |||
| + | ===== Utilisation basique ===== | ||
| + | |||
| + | ==== Compilation du programme pour le débuggage ==== | ||
| + | Pour que gdb puisse débugger un programme, il a besoin des informations de débuggage, qui peuvent être ajoutées en ajoutant l' | ||
| + | |||
| + | Exemple : | ||
| + | < | ||
| + | |||
| + | ==== Lancement de gdb ==== | ||
| + | Un fois le programme compilé, invoquez gdb comme ceci : | ||
| + | |||
| + | < | ||
| + | <note tip>on peut lancer avec l' | ||
| + | < | ||
| + | qui permet de visualiser le code, les points d' | ||
| + | </ | ||
| + | Dans l' | ||
| + | À tout moment, vous pouvez interrompre le programme avec le raccourci clavier **Ctrl+C** dans le terminal. La commande **where** vous permettra alors de voir la pile des appels. | ||
| + | Pour reprendre l' | ||
| + | |||
| + | Si vous souhaitez changer l' | ||
| + | |||
| + | La commande **start** lance le programme et s' | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Résumé des principales commandes ==== | ||
| + | |||
| + | ^commande | ||
| + | |run | r | lance le programme (s' | ||
| + | |continue | ||
| + | |~~~ | ~~~ | ~~~ | | ||
| + | |break | ||
| + | |info breakpoints | ||
| + | |delete [x] | d [x] | efface les points d' | ||
| + | |~~~ | ~~~ | ||
| + | |next | n | exécute une instruction (ne rentre pas dans les fonctions) | ||
| + | |step | s | exécute une instruction (rentre potentiellement dans les fonctions) | | ||
| + | |finish | ||
| + | |list | l | affiche 10 lignes de code centrée sur la ligne à exécuter | ||
| + | |until xx | u xx | exécute les instructions jusqu' | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Utilisation avancée ===== | ||
| + | |||
| + | ==== Placer des points d' | ||
| + | |||
| + | Si vous soupçonnez une fonction particulière de faire bugger votre programme, vous pouvez placer un // | ||
| + | |||
| + | Si la fonction désirée est située dans une classe ou un // | ||
| + | |||
| + | Pour afficher la liste des points d' | ||
| + | < | ||
| + | Num Type Disp Enb Address | ||
| + | 1 | ||
| + | at src/ | ||
| + | Ici, il a pour identifiant 1. S'il ne vous intéresse plus, vous pouvez le supprimer avec la commande **delete 1**. | ||
| + | |||
| + | <note tip>Plus généralement, | ||
| + | |||
| + | Pour aller au prochain point d' | ||
| + | |||
| + | ==== Afficher la valeur d'une variable ==== | ||
| + | |||
| + | Il est possible d' | ||
| + | ou encore, en abbrégé et en spécifiant un type (x:hexa, d:decimal, f:float, c:char, s:string… help x pour les voir tous): | ||
| + | < | ||
| + | La même remarque (§ précédent) sur la portée, concernant les classes et les espaces de nom s' | ||
| + | et pour une variable qui est un tableau de char de 16 caractères: | ||
| + | < | ||
| + | |||
| + | ===== Interfaces graphiques ===== | ||
| + | |||
| + | Il existe de multiples interfaces graphiques pour gdb qui facilitent grandement le débuggage en affichant le code source, créant des schémas représentant les variables, etc. En voici quelques-unes : | ||
| + | |||
| + | * Nemiver: interface de gdb s' | ||
| + | * [[http:// | ||
| + | * ddd: interface graphique très complète pour de nombreux debuggers dont gdb | ||
| + | * xxgdb: interface de gdb pour X | ||
| + | * [[https:// | ||
| + | * gdb-mode pour emacs | ||
| + | |||
| + | ==== Pour Vim/GVim ==== | ||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[https:// | ||
| + | |||
| + | ==== Pour IDE ==== | ||
| + | Aussi, quelques environnements de développement incluent une interface graphique pour **gdb** ; c'est le cas d' | ||
| + | |||
| + | ===== Concurrents ===== | ||
| + | |||
| + | Enfin signalons le concurrent **idb** (d' | ||
| + | < | ||
| + | |||
| + | ===== Liens ===== | ||
| + | * (en) [[http:// | ||
| + | * (fr) [[http:// | ||
| + | * (fr) [[https:// | ||
| + | * (fr) [[https:// | ||
| + | * (fr) [[http:// | ||
| + | * (fr) [[http:// | ||
| + | * (en) [[http:// | ||
| + | * (en) [[http:// | ||
