Como programa de carga de ler stdin e tendo parâmetros no gdb?
-
19-08-2019 - |
Pergunta
Eu tenho um programa que leva a entrada de stdin e também leva alguns parâmetros de linha de comando. Parece que este:
cat input.txt > myprogram -path "/home/user/work"
I tentar depurar o código com gdb emacs dentro, por M-x gdb, eu tento carregar o programa com o comando:
gdb cat input.txt > myprogram -path "/home/user/work"
No entanto, gdb não gosta disso.
Pergunta plagiou aqui .
Infelizmente eu não entendo a solução e não sei o que fazer além de compilar com a opção -g
e executando o comando M-x gdb.
Solução
Se você estava fazendo isso a partir de um shell que fazê-lo como este:
% gdb myprogram
gdb> run params ... < input.txt
Isso parece funcionar dentro emacs também.
Outras dicas
Existem várias maneiras de fazer isso:
$ 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
quando os fins de comando gdb run
(r
) por padrão os argumentos como conjunto previamente com set args
.
Para ser completo ao iniciar uma sessão de depuração há também a opção --args. ie)
gdb gdbarg1 gdbarg2 --args yourprog arg1 arg2 -x arg3
E se você não precisa de depuração desde o início você também pode anexar a um processo já em execução usando:
$ gdb myprogram xxx
onde xxx é o ID do processo. Então você não precisa dizer gdb os argumentos de partida.