11

有没有办法在使用 GDB 时通过 cmd 行设置断点。

目前在运行 GDB,我需要设置

 (gdb) b fun1
 (gdb) b fun2
 (gdb) b fun3

如果我再次关闭并打开 GDB,我需要设置所有断点:(。有没有办法在 cmd 行本身中为 GDB 设置断点,比如

  $> gdb -break fun1 -break fun2 -break fun3 ./myprog
4

4 回答 4

16

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 帮助中指定 :(

于 2012-08-30T15:59:05.757 回答
7

将您的命令放在一个文件中,并使用该标志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

其他答案让我明白了这一点。

于 2012-08-30T13:16:22.613 回答
1

您可以使用命令gdb -ex 'b fun1' -ex 'b fun2'(或长格式-eval-command)。

奇怪的是,它在 中缺失man gdb,但它在 中info gdb。当然,在来源中!

于 2012-08-30T16:28:51.270 回答
0

我不知道你是否可以在gdb之外设置断点,但我知道你可以在gdb内部使用Linux命令,这样你就不必经常退出gdb。gdb 命令是shell yourcommand,如果你想运行 ls,只需shell ls在 gdb 下输入。

于 2012-08-30T15:51:00.120 回答