Quand j'ai débogué un exécutable program
avec des arguments arg1 arg2
avec gdb
i Effectue la séquence suivante
gdb
file ./program
run arg1 arg2
bt
quit
Comment puis-je faire la même chose d'une ligne de commande dans le script shell?
Vous pouvez passer des commandes à GDB sur la ligne de commande avec option -ex
. Vous devez répéter cela pour chaque commande. Cela peut être utile lorsque votre programme doit lire STDIN afin que vous ne souhaitiez pas rediriger. Par exemple, pour od -c
echo abc |
gdb -ex 'break main' -ex 'run -c' -ex bt -ex cont -ex quit od
Donc, en particulier pour votre question, vous pouvez utiliser:
gdb -ex 'run arg1 arg2' -ex bt -ex quit ./program
Les commandes pourraient être alimentées sur une entrée standard:
#!/bin/sh
exec gdb -q <<EOF
file ./program
run arg1 arg2
bt
quit
EOF
Ou les commandes peuvent être placées dans afile
et gdb
fonctionnent avec gdb -batch -x afile
, ou si vous détestez les nouvelles lignes (et le codeur de maintenance) avec une coque de fantaisie, vous pouvez tout faire sur une seule ligne (moyen d'exprimer la version Heredoc):
gdb -q <<< "file ./program"$'\n'run$'\n'...