Domanda

  

Ho un programma che accetta input da   stdin e accetta anche alcuni parametri   dalla riga di comando. Sembra così:

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

Provo a eseguire il debug del codice con gdb   dentro emacs, di M-x gdb, ci provo   carica il programma con il comando:

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

Tuttavia, a gdb non piace.

Domanda scritta da qui . Sfortunatamente non capisco la soluzione e non sono sicuro di cosa fare oltre la compilazione con l'opzione -g e l'esecuzione del comando M-x gdb.

È stato utile?

Soluzione

Se lo facessi da una shell lo faresti in questo modo:

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

Questo sembra funzionare anche all'interno di Emacs.

Altri suggerimenti

Esistono diversi modi per farlo:

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

o

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

o

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

dove il comando gdb esegui ( r ) utilizza per impostazione predefinita gli argomenti impostati in precedenza con set args .

Per completezza all'avvio di una sessione di debug c'è anche l'opzione --args. cioè)

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

E se non è necessario eseguire il debug sin dall'inizio, è anche possibile collegarsi a un processo già in esecuzione utilizzando:

$ gdb myprogram xxx

dove xxx è l'ID del processo. Quindi non è necessario dire a gdb gli argomenti di partenza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top