有没有办法在使用 GDB 时通过 cmd 行设置断点。
目前在运行 GDB,我需要设置
(gdb) b fun1
(gdb) b fun2
(gdb) b fun3
如果我再次关闭并打开 GDB,我需要设置所有断点:(。有没有办法在 cmd 行本身中为 GDB 设置断点,比如
$> gdb -break fun1 -break fun2 -break fun3 ./myprog
GDB 提供 -ex 选项来设置 GDB 命令,例如从命令行调用 GDB 时的 'break' 'info' 'set print' 'display x',如下所示
$> gdb -ex 'break main' -ex 'info b' -ex 'set print pretty on' ./myprog
-ex 选项的选项未在手册页或 GDB 帮助中指定 :(
将您的命令放在一个文件中,并使用该标志break
在命令行上将该文件传递给 gdb 。-x
来自man gdb
:
-x file Execute GDB commands from file file.
事实证明,有一个命令可以类似地传递命令,但在命令行上:both-ex
和-eval-command
允许您传递单个命令。它似乎是在版本7中引入的:它在gdb 6.3.5上不可用,但在7.3.1中可用。-ex
并-eval-command
记录在在线 gdb 文档中以及此处的其他命令行参数。
因此,对于您的示例:
$> gdb -ex 'break fun1' -ex 'break fun2' -ex 'break fun3' ./myprog
其他答案让我明白了这一点。
您可以使用命令gdb -ex 'b fun1' -ex 'b fun2'
(或长格式-eval-command
)。
奇怪的是,它在 中缺失man gdb
,但它在 中info gdb
。当然,在来源中!
我不知道你是否可以在gdb之外设置断点,但我知道你可以在gdb内部使用Linux命令,这样你就不必经常退出gdb。gdb 命令是shell yourcommand
,如果你想运行 ls,只需shell ls
在 gdb 下输入。