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

问题描述 投票:0回答:3

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

gdb
3个回答
33
投票
$ 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) 

9
投票

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

gdb --pid $(pgrep your_program)

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

注意:将 GDB 附加到另一个进程可能需要使用

sudo
或更改权限。


3
投票

我昨天刚刚经历了类似的事情,并在 gdb 中递归了一堆“帮助”命令,因为我在互联网上找不到我需要的确切内容。

在启动 gdb 并开始运行我的代码后,我使用了

set variable *your_variable* = *your desired input*
。效果非常好。

我知道这已经晚了,但也许对其他人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.