在运行GDB时通过cmd行设置break

时间:2012-08-30 13:13:57

标签: c gdb

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

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

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

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

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

4 个答案:

答案 0 :(得分:8)

GDB提供-ex选项,用于在命令行调用GDB时设置GDB命令,例如'break''info''set print''display x',如下所示

    $> gdb -ex 'break main' -ex 'info b' -ex 'set print pretty on' ./myprog

man page or in GDB help中未指定-ex选项的选项:(

答案 1 :(得分:3)

break命令放在一个文件中,然后使用-x标志将文件传递给命令行中的gdb。

来自man gdb

   -x file
           Execute GDB commands from file file.

事实证明 是一个类似传递命令的命令,但在命令行上:-ex-eval-command都允许您传递单个命令。它似乎已在 7 版本中引入:它在 gdb 6.3.5 上不可用,但在 7.3.1 中可用。联机gdb文档中记录了-ex-eval-command以及其他命令行参数here

所以,举个例子:

$> gdb -ex 'break fun1' -ex 'break fun2' -ex 'break fun3' ./myprog

其他答案就此接受了教训。

答案 2 :(得分:1)

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

奇怪的是,man gdb中缺少它,但它出现在info gdb中。当然,在消息来源中!

答案 3 :(得分:0)

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