Exécuter GDB dans Bash Script

Fumbani Banda 12 octobre 2023
  1. Créer un fichier binaire
  2. Exécutez gdb dans Bash Script
Exécuter GDB dans Bash Script

Ce tutoriel montre comment exécuter gdb dans un script bash avec un fichier binaire qui prend des arguments en ligne de commande.

Nous allons créer un programme C qui prend un seul argument de ligne de commande et le convertit en un fichier binaire. Nous utiliserons ce fichier binaire à des fins de démonstration dans ce tutoriel.

Créer un fichier binaire

Voici un programme C qui prend un argument de ligne de commande et l’affiche à l’écran.

#include <stdio.h>
void main(int argc, char *argv[]) {
  printf("This is a C program!\n");

  if (argc < 2) {
    printf("No argument passed.\n");
  } else {
    printf("Argument 1: %s\n", argv[1]);
  }
}

Compilez le programme C et convertissez-le en un fichier binaire à l’aide de la commande suivante.

gcc args.c -o args

Exécutez le fichier binaire sans aucun argument.

./args

La sortie du fichier binaire sans arguments :

This is a C program!
No argument passed.

Exécutez le fichier binaire avec un seul argument.

./args hello

La sortie du fichier binaire avec un seul argument.

This is a C program!
Argument 1: hello

Exécutez gdb dans Bash Script

Le script bash exécute gdb avec l’option -q, qui signifie tout à fait. Il indique à gdb de ne pas imprimer le numéro de version au démarrage. L’option --args est utilisée pour passer des arguments de ligne de commande au binaire que gdb charge pour le débogage. Cependant, le premier argument est le binaire.

Dans notre cas, args est le nom du binaire et arg1 est l’argument passé au binaire.

#!/bin/bash

gdb -q --args args arg1

Exécutez le script bash.

bash gdb_script.sh

Une fois que vous avez exécuté le script, il ouvre gdb comme indiqué ci-dessous, mais il n’exécute pas le fichier binaire. Vous devez taper run pour exécuter le fichier binaire dans gdb.

Reading symbols from args...
(no debugging symbols found)...done.
gdb$ 

Pour exécuter automatiquement le fichier binaire une fois que nous avons exécuté le script bash, nous pouvons ajouter le -ex=r comme indiqué ci-dessous.

!/bin/bash

gdb -q -ex=r --args args arg1

Exécutez le script bash.

bash gdb_script.sh

A partir de la sortie, nous pouvons voir que le fichier binaire a été exécuté automatiquement sans que nous ayons à taper run dans gdb.

Reading symbols from args...
(no debugging symbols found)...done.
Starting program: /root/args arg1
This is a C program!
Argument 1: arg1
[Inferior 1 (process 3372) exited with code 021]
Warning: not running
gdb-peda$ 
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub