2011-02-11 49 views
4

我想用valgrind運行我的c + +程序,但我在程序中需要用戶輸入標準輸入,但是當我用valgrind運行,它不會讓用戶輸入任何程序,有沒有辦法解決這個問題?使valgrind能夠讀取用戶輸入時,C++需要它

一直在尋找,但還沒有找到答案。

+0

你應該展開你的意思,valgrind不會讓用戶輸入任何東西。我用valgrind來調試多次從stdin讀取的程序。 – 2011-02-11 22:35:45

+0

我的意思是,我開始我的程序,它需要用戶輸入啓動,(輸入一個數字在標準輸入),它也輸出一些文本到控制檯...文本不顯示,我不能輸入任何輸入當用valgrind運行控制檯時... – Daniel 2011-02-12 04:01:16

回答

2

我還沒有嘗試過,但我發現這個在手冊頁:

--input-fd=<number> [default: 0, stdin] 
       Specify the file descriptor to use for reading input from the 
       user. This is used whenever valgrind needs to prompt the user 
       for a decision. 

如果指定一個不同的FD(比如3)的valgrind用於輸入,會發生什麼?

1

下面是一個linux例子,其中一個cgi程序(./myexe)從標準輸入讀取。我們將輸入放入文件mystdin中。因此,valgrind可以從終端讀取輸入,我們執行--input-fd = 3並告訴shell將/ dev/tty重定向到文件描述符3.爲了我們可以控制gdb,我們從/ dev添加stdin的重定向/ tty在--db命令參數中輸入valgrind。這可能是一個更糟糕的例子。希望能幫助到你。

valgrind --input-fd=3 --db-command='gdb -nw %f %p < /dev/tty' --db-attach=yes ./myexe < mystdin 3</dev/tty