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

Vis*_*esn 5 c gdb

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

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

 (gdb) b fun1
 (gdb) b fun2
 (gdb) b fun3
Run Code Online (Sandbox Code Playgroud)

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

  $> gdb -break fun1 -break fun2 -break fun3 ./myprog
Run Code Online (Sandbox Code Playgroud)

Vis*_*esn 9

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

    $> gdb -ex 'break main' -ex 'info b' -ex 'set print pretty on' ./myprog
Run Code Online (Sandbox Code Playgroud)

手册页或GDB帮助中未指定-ex选项的选项 :(


pb2*_*b2q 6

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

来自man gdb

   -x file
           Execute GDB commands from file file.
Run Code Online (Sandbox Code Playgroud)

事实证明,有对于同样穿过命令的命令,但该命令行:既-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
Run Code Online (Sandbox Code Playgroud)

其他答案在这方面教会了我。