2012-10-27 13 views
24

Ho un programma e sto cercando di eseguire il debug usando gdb. All'interno del programma ho metodi che richiedono all'utente di inserire un input usando stdin. Come posso inserire questo input quando sono in gdb? In modo che io possa tracciare come funzionano i miei metodi?Come eseguire il debug di un programma che richiede l'input dell'utente da stdin con GDB?

+0

Per il caso più semplice di immissione diretta, la domanda è la stessa: http://stackoverflow.com/questions/455544 Ci sono tuttavia casi che questo non copre: 1) è necessario vedere lo stdout per decidere lo stdin 2) i tempi effettivi e le pressioni dei tasti sono necessari come in ncurses. In questi casi, forse aspettati potrebbe farlo: http://stackoverflow.com/questions/5579901/automated-test-tools-for-linux-ncurses –

risposta

21
$ cat >foo <<EOF 
something 
EOF 
$ gdb -quiet /bin/cat 
Reading symbols from /bin/cat...(no debugging symbols found)...done. 
Missing separate debuginfos, use: debuginfo-install coreutils-8.12-7.fc16.x86_64 
(gdb) run <foo 
Starting program: /bin/cat <foo 
something 
[Inferior 1 (process 22436) exited normally] 
(gdb) 
1

Ho appena passato attraverso qualcosa di simile ieri e ricorsivo attraverso un mazzo di "aiuto" comandi in gdb, perché non riuscivo a trovare esattamente quello che mi serviva su Internet.

Ho utilizzato set variable *your_variable* = *your desired input* dopo aver avviato gdb e ho iniziato a eseguire il mio codice. Ha funzionato come un fascino.

So che è tardi, ma forse aiuterà qualcun altro.

+1

Come utilizzeresti questo per stdin, però? – Aralox

Problemi correlati