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

时间:2012-10-27 21:09:45

标签: gdb

我有一个程序,我正在尝试使用gdb进行调试。在程序内部,我有方法要求用户使用stdin输入输入。当我在gdb中时,如何输入此输入?这样我就可以追踪我的方法是如何工作的?

3 个答案:

答案 0 :(得分:26)

$ 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) 

答案 1 :(得分:3)

我昨天刚刚经历过这样的事情并通过一堆&#34;帮助&#34; gdb中的命令,因为我无法在Internet上找到我需要的内容。

在我启动gdb并开始运行我的代码后,我使用了set variable *your_variable* = *your desired input*。工作就像一个魅力。

我知道这已经晚了,但也许它会帮助别人。

答案 2 :(得分:3)

您也可以先运行程序,然后将GDB附加到它:

gdb --pid $(pgrep your_program)

这样,您将能够在单独的终端中以交互方式运行程序。