2011-02-11 91 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