Wie automatisch, führen Sie die ausführbare Datei im GDB?
Möchte ich haben gdb
sofort die ausführbare Datei ausführen, wie wenn ich den Begriff "ausführen"
(motivation: ich mag die Eingabe von "run").
Eine Möglichkeit ist die pipe den Befehl zu gdb
wie diese:
$ echo run | gdb myApp
Aber das problem bei diesem Ansatz ist, dass Sie verlieren Interaktivität mit gdb
,
zB. wenn ein breakpoint Trigger oder myApp
Abstürze gdb
beendet.
Diese Methode wird diskutiert hier.
Blick auf die Optionen in --help
ich sehe nicht einen Weg, dies zu tun, aber vielleicht bin ich etwas fehlt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie brauchen, um Argumente zu
a.out
:BEARBEITEN:
Orion sagt, das funktioniert nicht auf Mac OSX.
Den
-ex
Flagge seitGDB-6.4
(veröffentlicht in 2005), aber OSX nutzt Apple ' s fork des GDB, und die neueste XCode für Leopard enthältGDB 6.3.50-20050815 (Apple version gdb-967)
, so sind Sie aus Glück heraus.Gebäude aktuelle
GDB-7.0.1
release ist eine mögliche Lösung. Nur sicher sein, Lesen Sie diese../a.out a b
gdb -x
auf Linux-Systemen. OS X verwendet eine LLVM und Klang so überprüfen Sie die debugging-Funktionen vonlldb
.Ich würde einen gdb-Skript:
wo Ihre-Skript enthält etwas wie:
danach haben Sie die normalen interaktive gdb Eingabeaufforderung
BEARBEITEN:
hier ist eine Optimierung für die wirklich faul:
.gdbinit
imworking directory
.Danach führen Sie einfach gdb als
gdb
... und gdb automatisch lädt und führt den Inhalt .gdbinit.
fg
nach derr
Linie, wirkt es sanelystart
Befehl bietet eine Abkürzung fürb
+r
: stackoverflow.com/a/2119606/895245Die Katze können Sie die Eingabe fortsetzen, nach gdb bricht.
Make breakpoint pending on future shared library load? (y or [n])
automatisch übernehmen "Nein"beantworten.start
BefehlDieser Befehl ist eine weitere gute option:
Es ist wie Flucht, sondern setzt auch einen temporären breakpoint auf
main
und Stoppt dort.Dieser temporären Haltepunkt wird deaktiviert, sobald es getroffen wurde.
starti
Gibt es auch eine entsprechende
starti
startet das Programm und Stoppt bei der ersten Anweisung statt, siehe auch: Halt an der ersten Maschine-code-Anweisung in der GDBToll, wenn Sie tun, einige low-level " - Sachen.
gdb -x <(echo run) --args $program $args