使valgrind能够在c ++需要时读取用户输入

时间:2011-02-11 20:51:41

标签: c++ user-input valgrind

我正在尝试使用valgrind运行我的c ++程序,但是我在程序中有一些要求用户从stdin输入的点,但是当我用valgrind运行时,它不会让用户为程序输入任何内容,是否有绕过这个?

一直在寻找,但还没有找到答案。

2 个答案:

答案 0 :(得分: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.

如果为valgrind指定一个不同的fd(例如3)用于输入会发生什么?

答案 1 :(得分:1)

这是一个linux示例,其中cgi程序(./myexe)从stdin读取。我们将输入放入mystdin文件中。所以valgrind可以从终端读取输入,我们执行--input-fd = 3并告诉shell将/ dev / tty重定向到文件描述符3.这样我们可以控制gdb,我们从/ dev添加stdin的重定向/ tty在--db-command参数中对valgrind。这可能是一个更糟糕的案例。希望它有所帮助。

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