在 Linux 中启动 GDB 时如何传递命令行参数? [复制]
Posted
技术标签:
【中文标题】在 Linux 中启动 GDB 时如何传递命令行参数? [复制]【英文标题】:How do I pass a command line argument while starting up GDB in Linux? [duplicate] 【发布时间】:2013-01-07 19:58:09 【问题描述】:作为任务的一部分,我必须调试一个有错误的程序。但是,我必须先传递命令行参数才能解决这个问题。
我愿意:
gdb -tui InsertionSortWithErrors
这可行,但之后我不知道如何传递参数。我使用了gdb -help
,它说明了--args
,我也尝试过,但没有成功。
我希望能够获得调试器+GUI并传递命令行参数。
【问题讨论】:
【参考方案1】:试试
gdb --args InsertionSortWithErrors arg1toinsort arg2toinsort
【讨论】:
就像在 GNU GDB 手册部分 Invoking GDB987654321@中提到的那样 如果你运行gdb -h
也会提到它,而手册页中又提到了它。
@PietroSaccardi 手册页和-h
输出之间似乎存在一些差异,至少在某些 Ubuntu 版本上是这样。这可能会发生,尤其是如果命令的 man 文件没有像解析 -h
选项的源代码那样经常更新。【参考方案2】:
gdb
启动后,您可以使用“r args”运行程序。
因此,如果您通过以下方式运行代码:
$ executablefile arg1 arg2 arg3
在gdb
上调试它:
$ gdb executablefile
(gdb) r arg1 arg2 arg3
【讨论】:
只是为了扩展这一点....我的运行通常是这样的:program --option1 --option2=argvalue
所以在 gdb 中我输入了:r --option1 --option2=argvalue
这起初对我来说并不明显。
这确实是票数最高的评论。我想补充一点,r
代表 gdb 命令 run
,您可以在 gdb 中输入 help run
来查看它的一些帮助。
我不想每次启动 gdb 时都输入参数,我希望它在我的命令行历史记录中【参考方案3】:
我正在使用 GDB7.1.1,如 --help
所示:
gdb [options] --args executable-file [inferior-arguments ...]
恕我直言,这个顺序一开始有点不直观。
【讨论】:
我同意,非常不直观,所以真正的命令行应该是:$ gdb --args <executable> <argument(s)>
。我错误地在 --args
之后的所有内容中添加了引号,导致 gdb 将整个内容解析为可执行文件。
我认为是因为参数紧跟在可执行文件之后,就好像你在没有 gdb 的情况下运行一样。
我认为不直观的是--args
。如果拼写为--run
会非常直观【参考方案4】:
另一种选择,一旦进入 GDB shell,在运行程序之前,你可以这样做
(gdb) set args file1 file2
并检查它:
(gdb) show args
【讨论】:
以上是关于在 Linux 中启动 GDB 时如何传递命令行参数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章