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$