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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top