J'ai un programme qui prend l'entrée de stdin et prend également quelques paramètres de la ligne de commande. Cela ressemble à ceci:
cat input.txt > myprogram -path "/home/user/work"
J'essaye de déboguer le code avec gdb dans emacs, par Mx gdb, j'essaye de charger le programme avec la commande:
gdb cat input.txt > myprogram -path "/home/user/work"
Cependant, gdb ne l'aime pas.
Question lit d'enfant d' ici . Malheureusement, je ne comprends pas la solution et je ne sais pas quoi faire au-delà de la compilation avec l' -g
option et de l'exécution de la commande Mx gdb.
emacs
gdb
redirect
command-line-arguments
vinc456
la source
la source
<
etinput.txt
commeargv
arguments de mon programme: (Je vais continuer à creuser autour de ces réponses avec mon gdb 8.2.1: stackoverflow.com/questions/3544325/…Il existe plusieurs façons de procéder:
ou
ou
où la
run
commande gdb (r
) utilise par défaut les arguments définis précédemment avecset args
.la source
gdb -ex 'r -path /home/user/work < input.txt' myprogram
dans la troisième variante?gdb -ex 'b main' -ex 'r -path /home/user/work < input.txt' myprogram
.Par souci d'exhaustivité au démarrage d'une session de débogage, il existe également l'option --args. c'est à dire)
la source
gdb --args yourprog.out input.txt
Et si vous n'avez pas besoin de déboguer depuis le tout début, vous pouvez également vous attacher à un processus déjà en cours d'exécution en utilisant:
où xxx est l'identifiant du processus. Ensuite, vous n'avez pas besoin de dire à gdb les arguments de départ.
la source