我正在尝试使用valgrind运行我的c ++程序,但是我在程序中有一些要求用户从stdin输入的点,但是当我用valgrind运行时,它不会让用户为程序输入任何内容,是否有绕过这个?
一直在寻找,但还没有找到答案。
答案 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