Comment exécuter automatiquement L'exécutable dans GDB?
j'aimerais avoir gdb
immédiatement lancer l'exécutable, comme si j'avais tapé "exécuter"
(motivation: je n'aime pas taper "exécuter").
une façon est de pipe la commande à gdb
comme ceci:
$ echo run | gdb myApp
mais le problème avec cette approche est que vous perdez l'interactivité avec gdb
,
par exemple. si un point de rupture se déclenche ou myApp
s'écrase, gdb
cesse.
Cette méthode est discutée ici .
en regardant les options dans --help
, Je ne vois pas comment faire ça, mais peut-être que je manque quelque chose.
5 réponses
gdb -ex run ./a.out
si vous avez besoin de passer des arguments à a.out
:
gdb -ex run --args ./a.out arg1 arg2 ...
EDIT: Orion dit que cela ne fonctionne pas sur Mac OSX.
le drapeau -ex
est disponible depuis GDB-6.4
(sorti en 2005), mais OSX utilise la fourchette D'Apple de GDB, et le dernier XCode pour Leopard contient GDB 6.3.50-20050815 (Apple version gdb-967)
, donc vous n'avez pas de chance.
Bâtiment actuel GDB-7.0.1
la libération est l'un solution possible. N'oubliez pas de lire ce .
j'utiliserais un script gdb:
gdb -x your-script
où votre script contient quelque chose comme:
file a.out
b main
r
après vous avez l'invite gdb interactive normale
MODIFIER :
voici une optimisation pour les vraiment paresseux:
- enregistrer le script comme
.gdbinit
dans leworking directory
. -
après vous lancez simplement gdb comme
gdb
... et gdb charge et exécute automatiquement le contenu de .gdbinit.
(echo r ; cat) | gdb a.out
le cat vous permet de continuer à taper après les pauses gdb.
start
commande
cette commande est une autre bonne option:
gdb -ex start --args ./a.out arg1 arg2
C'est comme courir, mais aussi un point d'arrêt temporaire à main
et s'arrête là.
ce point de rupture temporaire est désactivé une fois qu'il est atteint.
starti
il y a aussi un starti
qui commence le programme et s'arrête à la toute première instruction à la place, Voir aussi: arrêt à la première instruction de code machine dans GDB
super quand tu fais des trucs de bas niveau.