如何使用GDB调试从stdin获取用户输入的程序?

如何使用GDB调试从stdin获取用户输入的程序?,gdb,Gdb,我有一个程序,我正试图用gdb调试它。在程序内部,我有一些方法要求用户使用stdin输入。当我在gdb中时,如何输入此输入?所以我可以跟踪我的方法是如何工作的?$cat>foo我昨天刚刚经历了类似的事情,并在gdb中递归了一系列“help”命令,因为我在互联网上找不到我需要的东西 $ cat >foo <<EOF something EOF $ gdb -quiet /bin/cat Reading symbols from /bin/cat...(no debugging s

我有一个程序,我正试图用gdb调试它。在程序内部,我有一些方法要求用户使用stdin输入。当我在gdb中时,如何输入此输入?所以我可以跟踪我的方法是如何工作的?

$cat>foo我昨天刚刚经历了类似的事情,并在gdb中递归了一系列“help”命令,因为我在互联网上找不到我需要的东西

$ 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) 
在启动gdb并开始运行代码之后,我使用了
set variable*您的_variable*=*您想要的输入*
。工作得很有魅力


我知道这很晚了,但也许会帮助别人

您也可以先运行程序,然后将GDB连接到程序:

gdb --pid $(pgrep your_program)

这样,您就可以在一个单独的终端上以交互方式运行程序。

对于直接输入的简单情况,问题与此相同:但也有一些情况没有涵盖:1)您需要查看标准输出以确定标准输入2)实际计时和按键需要与ncurses中的情况类似。在这种情况下,也许expect可以做到:不过,您如何将其用于stdin?