如何传递参数并将stdin从文件重定向到程序在gdb中运行?

我通常运行一个程序为:

./a.out arg1 arg2 <file

我想用gdb调试它。

我知道set args功能,但只能从gdb提示符下工作。


将参数从gdb中传递给run命令。

$ gdb ./a.out
(gdb) r < t
Starting program: /dir/a.out < t

你可以这样做:

gdb --args path/to/executable -every -arg you can=think < of

魔术比特是--args

只需在gdb命令控制台中键入run以开始调试。


如果你想在gdb run裸指令来执行带有重定向和参数的程序,你可以使用set args

% gdb ./a.out
(gdb) set args arg1 arg2 <file
(gdb) run

我无法用--args参数实现相同的行为, gdb强烈转义重定向,即

% gdb --args echo 1 2 "<file"
(gdb) show args
Argument list to give program being debugged when it is started is "1 2 <file".
(gdb) run
...
1 2 <file
...

这实际上是重定向gdb本身的输入,而不是我们真正想要的东西

% gdb --args echo 1 2 <file
zsh: no such file or directory: file
链接地址: http://www.djcxy.com/p/86031.html

上一篇: How to pass arguments and redirect stdin from a file to program run in gdb?

下一篇: How gdb reconstructs stacktrace for C++?