2012-10-27 74 views
24

我有一個程序,我試圖用gdb調試它。在程序內部,我有一些方法需要用戶使用stdin輸入輸入。我在gdb時如何輸入這個輸入?這樣我可以跟蹤我的方法如何工作?如何調試一個程序,從用戶輸入stdin與GDB?

+0

對於直接輸入更簡單的情況,問題與此相同:http://stackoverflow.com/questions/455544但是,這並不包括以下情況:1)您需要查看stdout以決定stdin 2)實際的時間和按鍵是需要像在ncurses。在這些情況下,也許期望可能會這樣做:http://stackoverflow.com/questions/5579901/automated-test-tools-for-linux-ncurses –

回答

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

我剛剛經歷過類似昨天的事情,並通過gdb中的一堆「幫助」命令遞歸,因爲我無法在Internet上找到所需的東西。

我使用set variable *your_variable* = *your desired input*我開始gdb並開始運行我的代碼。像魅力一樣工作。

我知道這已經晚了,但也許它會幫助別人。

+1

但是,你如何使用這個標準輸入,但? – Aralox