108 votes

Comment charger un programme de lecture de l'entrée standard stdin et en prenant les paramètres dans gdb?

J'ai un programme qui prend en entrée de stdin et prend également certains paramètres à partir de la ligne de commande. Il ressemble à ceci:

chat input.txt > myprogram -chemin "/home/utilisateur/travail"

J'ai essayer de déboguer le code à l'aide de gdb dans emacs, par M-x gdb, j'essaie de charger le programme avec la commande:

gdb chat input.txt > myprogram -chemin "/home/utilisateur/travail"

Cependant, gdb ne l'aime pas.

Question chipé à partir d' ici. Malheureusement je ne comprends pas la solution et je ne suis pas sûre de savoir quoi faire au-delà de la compilation avec l'option-g et de l'exécution de la commande M-x gdb.

140voto

Alnitak Points 143355

Si vous le faisiez à partir d'un shell, vous auriez du faire comme ceci:

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

Cela semble fonctionner à l'intérieur d'emacs.

33voto

maxschlepzig Points 3578

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ù le gdb run commande (r) utilise par défaut les arguments que défini précédemment avec set args.

6voto

vinc456 Points 1542

Des fins d'exhaustivité, lors du démarrage d'une session de débogage, il est également le --args option. ie)

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

1voto

Zitrax Points 3443

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

$ gdb myprogram xxx

où xxx est l'id de processus. Alors vous n'avez pas besoin de le dire gdb départ arguments.

-2voto

Nathan Fellman Points 31310

vous pouvez aussi faire comme ceci:

% gdb myprogram
(gdb) set args arg0 arg1
(gdb) run

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X