GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment utiliser GDB pour déboguer des programmes dans Ubuntu 20.04

GNU Debugger (GDB) est un débogueur open source pour les systèmes GNU. Le débogueur est portable et peut être utilisé pour plusieurs langages comme C/C++ et Fortran. Il peut être utilisé pour déboguer des programmes en observant leurs états sur des points d'arrêt spécifiques et même en modifiant le flux ou les valeurs pour une exécution ultérieure. Habituellement, le GDB s'exécute en ligne de commande, mais plusieurs interfaces graphiques ont également été développées pour cela.

Dans cet article, nous explorons comment déboguer des programmes C à l'aide de GDB dans Ubuntu 20.04 LTS (Focal Fossa).

Prérequis

  • Système Ubuntu 20.04
  • Utilisateur avec des privilèges sudo pour renommer plusieurs fichiers.

Remarque : Les commandes décrites dans cet article ont été testées sur Ubuntu 20.04 LTS (Fosse focale).

Installer des packages

Installez les packages GN prérequis pour la compilation et le débogage. Exécutez la commande suivante dans le terminal :

$ sudo apt install gcc gdb -y

Exemple de programme C pour le débogage

Code

Avant de s'exécuter, un programme doit être compilé. Nous allons compiler le code C suivant dans le fichier main.c .

#include <stdio.h>

int main() {

for (int i=0; i<5; ++i) {
printf("Iterator: %d\n", i);
}
return 0;
}

Compiler le programme C avec GCC

Habituellement, un code C est compilé dans GCC à l'aide de la commande suivante :

$ gcc main.c -o bin

Un autre argument doit être fourni pour inclure les symboles dans le binaire. Ces symboles sont utilisés par GDB pour suivre et déboguer le programme. Exécutez la commande suivante dans le terminal pour compiler le code C :

$ gcc -g main.c -o bin

Un fichier exécutable nommé bin apparaîtra.

Exécuter le programme de test

Le fichier binaire nommé bin peut être exécuté comme n'importe quel autre fichier exécutable sur une interface de ligne de commande. Utilisez la commande suivante pour l'exécuter dans le terminal :

$ ./bin

La sortie du code apparaîtra.

Déboguer une application sous Linux

Lancer le débogueur

Exécutez l'utilitaire GDB à l'aide de la commande suivante dans le terminal :

$ gdb bin

Appuyez sur Entrée. La console du terminal GDB apparaîtra. Entrez le exécution dans cette console pour exécuter l'exécutable fourni à l'utilitaire en tant qu'argument.

(gdb) run

Déboguer les points d'arrêt

Ajouter des points d'arrêt

Les points d'arrêt peuvent être ajoutés de plusieurs manières. Nous ajouterons un point d'arrêt sur le printf fonction dans notre code. Exécutez la commande suivante dans le terminal pour ajouter un point d'arrêt :

(gdb) break printf

Alternativement, un numéro de ligne peut également être utilisé pour ajouter un point d'arrêt.

(gdb) break 6

Entrez le exécution commande et le programme s'arrêtera au point d'arrêt.

Parcourir les points d'arrêt

Utilisez la commande continuer pour continuer l'exécution du programme.

(gdb) continue

Il existe deux autres commandes à des fins différentes pour continuer l'exécution du programme :

  • Étape :parcourt l'instruction machine suivante.
  • Suivant :étapes pour parcourir la ligne de code suivante.

Des abréviations de commandes peuvent également être utilisées. Comme l'abréviation de continuer la commande est c.

(gdb) c

Informations sur les points d'arrêt

Les informations sur les points d'arrêt peuvent être observées en utilisant info commande de gdb . Exécutez la commande suivante sur le terminal :

(gdb) info breakpoints

Les informations sur les points d'arrêt apparaîtront.

Remarque :Le numéro à gauche du point d'arrêt est utilisé pour s'y référer par d'autres commandes.

Supprimer les points d'arrêt

Un point d'arrêt peut être supprimé à l'aide de la supprimer commande et en se référant au numéro de point d'arrêt observé dans la sortie de la info utilitaire.

(gdb) delete 1

Maintenant, le point d'arrêt a été supprimé et s'il est exécuté, le programme s'exécutera directement jusqu'à la fin.

Variables de surveillance

Les variables peuvent être surveillées à l'aide de l'utilitaire watch. Tout d'abord, nous devons entrer la portée dans laquelle la variable existe. Pour cela, ajoutez d'abord un point d'arrêt à l'aide de la commande suivante :

(gdb) break 6

Exécutez ensuite le code qui atteint ce point d'arrêt.

(gdb) r

Nous sommes maintenant dans la boucle où la variable i existe.

La montre la commande sera utilisée pour observer la valeur précédente et nouvelle de la variable i dans la boucle.

(gdb) watch i

Maintenant le point d'arrêt généré par watch apparaîtra également dans la liste des points d'arrêt. La liste des points d'arrêt peut être affichée à l'aide de la commande suivante :

(gdb) info breakpoints

De plus, nous n'avons pas besoin du point d'arrêt inséré plus tôt. Il peut être facilement supprimé à l'aide de la commande suivante :

(gdb) delete 1

Maintenant, si vous continuez, le code affichera les valeurs chaque fois que la variable a changé de valeur et affichera les anciennes et les nouvelles valeurs.

(gdb) c

D'autres itérations du programme peuvent également être observées, en utilisant la même commande.

Quitter le débogueur

Exécutez la commande suivante dans le terminal pour quitter le débogueur.

(gdb) quit

Cela ferme gdb utilitaire et l'invite de ligne de commande par défaut apparaîtra.

Conclusion

Dans cet article, nous avons exploré comment exécuter et casser un programme dans GDB. De plus, il a également été configuré pour se casser lorsque la valeur d'une variable a changé. Nous espérons que vous pourrez facilement déboguer vos programmes dans GDB après avoir suivi cet article.


Ubuntu
  1. Comment utiliser la commande d'arrêt de Linux dans Ubuntu 18.04 et CentOS 7

  2. Comment déboguer des programmes C sous Linux à l'aide de gdb

  3. Comment utiliser la commande Uptime dans Ubuntu Linux

  4. Comment utiliser ssh-keyscan sur Ubuntu

  5. Comment utiliser ssh-agent sur Ubuntu

Comment utiliser la commande cd sous Linux

Comment installer et utiliser la commande Curl sur Ubuntu 20.04

Comment utiliser la commande tcpdump dans Ubuntu 20.04

Comment installer et utiliser Busybox dans Ubuntu

Comment utiliser Ubuntu

Comment installer et utiliser la commande Exa sur Ubuntu 20.04