GDB im Bash-Skript ausführen

Fumbani Banda 12 Oktober 2023
  1. Eine Binärdatei erstellen
  2. Ausführen von gdb im Bash-Skript
GDB im Bash-Skript ausführen

Dieses Tutorial demonstriert die Ausführung von gdb in einem Bash-Skript mit einer Binärdatei, die Befehlszeilenargumente akzeptiert.

Wir werden ein C-Programm erstellen, das ein einzelnes Befehlszeilenargument verwendet und es in eine Binärdatei konvertiert. Wir werden diese Binärdatei in diesem Tutorial zu Demonstrationszwecken verwenden.

Eine Binärdatei erstellen

Hier ist ein C-Programm, das ein Befehlszeilenargument nimmt und auf dem Bildschirm ausgibt.

#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]);
  }
}

Kompilieren Sie das C-Programm und konvertieren Sie es mit dem folgenden Befehl in eine Binärdatei.

gcc args.c -o args

Führen Sie die Binärdatei ohne Argumente aus.

./args

Die Ausgabe der Binärdatei ohne Argumente:

This is a C program!
No argument passed.

Führen Sie die Binärdatei mit einem einzigen Argument aus.

./args hello

Die Ausgabe der Binärdatei mit einem einzigen Argument.

This is a C program!
Argument 1: hello

Ausführen von gdb im Bash-Skript

Das Bash-Skript führt gdb mit der Option -q aus, die für ziemlich steht. Es weist gdb an, die Versionsnummer beim Start nicht auszudrucken. Die Option --args wird verwendet, um Befehlszeilenargumente an die Binärdatei zu übergeben, die gdb zum Debuggen lädt. Das erste Argument ist jedoch die Binärdatei.

In unserem Fall ist args der Name der Binärdatei und arg1 ist das Argument, das an die Binärdatei übergeben wird.

#!/bin/bash

gdb -q --args args arg1

Führen Sie das Bash-Skript aus.

bash gdb_script.sh

Sobald Sie das Skript ausführen, öffnet es gdb, wie unten gezeigt, aber es führt die Binärdatei nicht aus. Sie müssen run eingeben, um die Binärdatei in gdb auszuführen.

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

Um die Binärdatei automatisch auszuführen, sobald wir das Bash-Skript ausgeführt haben, können wir das -ex=r wie unten gezeigt hinzufügen.

!/bin/bash

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

Führen Sie das Bash-Skript aus.

bash gdb_script.sh

An der Ausgabe können wir erkennen, dass die Binärdatei automatisch ausgeführt wurde, ohne dass wir run in gdb eingeben mussten.

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