J'aimerais que gdb
exécute immédiatement l'exécutable, comme si j'avais tapé "run" (motivation: je n'aime pas taper "run").
Une façon consiste à diriger la commande vers 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 d'arrêt se déclenche ou myApp
plante, gdb
se ferme. Cette méthode est discutée ici .
Examen des options dans --help
, Je ne vois pas comment faire ça, mais peut-être que je manque quelque chose.
gdb -ex run ./a.out
Si vous devez 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 le fork d'Apple de GDB, et le dernier XCode pour Leopard contient GDB 6.3.50-20050815 (Apple version gdb-967)
, vous êtes donc pas de chance.
Construire la version actuelle de GDB-7.0.1
Est une solution possible. N'oubliez pas de lire this .
J'utiliserais un script gdb:
gdb -x your-script
où votre-script contient quelque chose comme:
file a.out
b main
r
ensuite, vous avez l'invite gdb interactive normale
MODIFIER :
voici une optimisation pour les vraiment paresseux:
.gdbinit
dans le working directory
.Ensuite, vous exécutez simplement gdb as
gdb
... et gdb charge et exécute automatiquement le contenu de .gdbinit.
(echo r ; cat) | gdb a.out
Le chat vous permet de continuer à taper après les pauses de gdb.
start
commande
Cette commande est une autre bonne option:
gdb -ex start --args ./a.out arg1 arg2
C'est comme exécuter, mais définit également un point d'arrêt temporaire à main
et s'arrête là.
Ce point d'arrêt temporaire est désactivé une fois qu'il est atteint.
starti
Il existe également un starti
connexe qui démarre 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
Idéal lorsque vous faites des trucs de bas niveau.
gdb -x <(echo run) --args $program $args