Wenn Sie ein Programm auf GDB ausführen, werden normalerweise die Argumente für das Programm im run
Befehl angegeben. Gibt es eine Möglichkeit, das Programm mit GDB auszuführen und Argumente in einem Shell-Skript anzugeben?
In einer verwandten Frage sah ich eine Antwort, in der erwähnt wurde, dass wir GDB an das Programm anhängen können, nachdem das Skript ausgeführt wurde. Aber dann muss ich das Programm abwarten.
Gibt es einen anderen Weg, dies zu tun?
Antworten:
Sie können gdb mit dem Parameter --args ausführen.
Wenn Sie möchten, dass es automatisch ausgeführt wird, platzieren Sie einige Befehle in einer Datei (z. B. 'run') und geben Sie es als Argument an: -x / tmp / cmds. Optional können Sie im Batch-Modus arbeiten.
quelle
man gdb
enthält nicht--args
, deshalb habe ich es nicht gefunden.gdb --help
tut.info gdb
Denken Sie daran, das nächste Mal zu verwenden, um die vollständige Dokumentation der GNU-Tools anzuzeigen :-).info
. Wenn Google oder Stack Overflow nicht mehr funktionieren XDindex-search
) entdeckt hatte, war ich von Informationen begeistert . Versuchen Sie:info gdb
dann 'i', dann '--args'. Es wird dich direkt dazu bringen.-ex=r
ist-ex=run
die Abkürzung für und weist gdb an, Ihr Programm sofort auszuführen, anstatt darauf zu warten, dass Sie an der Eingabeaufforderung "run" eingeben. Dann--args
heißt es, dass alles, was folgt, der Befehl und die Argumente sind, so wie Sie sie normalerweise an der Eingabeaufforderung eingeben würden.quelle
-exe=r
sehr Nützliche!Eine andere Möglichkeit, die ich persönlich etwas bequemer und intuitiver finde (ohne mich an den
--args
Parameter erinnern zu müssen ), besteht darin, normal zu kompilieren undr arg1 arg2 arg3
direkt von innen zu verwendengdb
, wie folgt :quelle
Sie können eine Datei mit Kontext erstellen:
Und gdb wie nennen
quelle
gdb hat,
--init-command <somefile>
wo somefile eine Liste von gdb-Befehlen zum Ausführen hat. Ich benutze dies, um//GDB
Kommentare in meinem Code zu haben, dann `als Skript, das den Befehl zum Laden der Debugsymbole setzt und dann eine Liste von Unterbrechungsbefehlen generiert, um für jeden
//GDB
Kommentar einen Haltepunkt zu setzen , und ihn startetquelle
Wenn der
--args
Parameter auf Ihrem Computer (dh unter Solaris 8) nicht funktioniert, können Sie gdb like startenUnd Sie können dies mit der Eingabe einer Datei in stdin und "sofort laufen" kombinieren:
quelle
Neben der Antwort von Hugo Ideler. Bei der Verwendung von Argumenten mit einem Präfix wie
--
oder-
war ich mir nicht sicher, ob ich mit gdb one in Konflikt geraten könnte.Es scheint, dass gdb all after
args
option als Argumente für das Programm verwendet.Zuerst wollte ich sicher sein, dass ich gdb mit Anführungszeichen um Ihre Argumente ausgeführt habe. Es wird beim Start entfernt.
Dies funktioniert auch, ist aber optional:
Das funktioniert nicht:
In diesem Fall
-tui
wird als mein Programmparameter nicht als gdb eins verwendet.quelle
Viel zu spät, aber hier ist eine Methode, die während der
gdb
Sitzung funktioniert .dann
Dies wird viele Übereinstimmungen zurückgeben, die nützliche ist
set args
.dann
Dadurch wird das Programm ausgeführt und die Argumente und die Anzahl der Argumente an main (argc, argv) übergeben.
quelle