Question

  

J'ai un programme qui prend les entrées de   stdin et prend également certains paramètres   depuis la ligne de commande. Cela ressemble à ceci:

cat input.txt > myprogram -path "/home/user/work"
     

J'essaie de déboguer le code avec gdb   dans emacs, par M-x gdb, j’essaie de   chargez le programme avec la commande:

gdb cat input.txt > myprogram -path "/home/user/work"
     

Cependant, gdb ne l'aime pas.

Question extraite de ici . Malheureusement, je ne comprends pas la solution et je ne sais pas quoi faire au-delà de la compilation avec l'option -g et de l'exécution de la commande M-x gdb.

Était-ce utile?

La solution

Si vous le faisiez à partir d'un shell, vous le feriez comme ceci:

% gdb myprogram
gdb> run params ... < input.txt

Cela semble également fonctionner dans emacs.

Autres conseils

Il y a plusieurs façons de le faire:

$ gdb myprogram
(gdb) r -path /home/user/work < input.txt

ou

$ gdb myprogram
(gdb) set args -path /home/user/work < input.txt
(gdb) r

ou

$ gdb -ex 'set args -path /home/user/work < input.txt' myprogram
(gdb) r

où la commande gdb exécuter ( r ) utilise par défaut les arguments tels que définis précédemment avec set args .

Par souci d’intégralité au démarrage d’une session de débogage, il existe également l’option --args. c'est-à-dire)

gdb gdbarg1 gdbarg2 --args yourprog arg1 arg2 -x arg3

Et si vous n'avez pas besoin de déboguer dès le début, vous pouvez également vous connecter à un processus en cours d'exécution en utilisant:

$ gdb myprogram xxx

où xxx est l'identifiant du processus. Ensuite, vous n'avez pas besoin de dire à gdb les arguments de départ.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top