GDB断点

GDB断点,gdb,breakpoints,Gdb,Breakpoints,我有一个断点列表,每次调试一个特定的程序时,我都要添加这些断点 是否有一种方法可以将所有断点信息放在一个文件中,并在每个调试会话开始时使用它?换句话说,在我发出“运行”命令之前,我是否可以向GDB提供一个包含断点信息的脚本文件?您可以将所有需要的命令放入一个.gdbinit文件,该文件与正在调试的可执行文件位于同一目录中 比如: b somefile.c:128 b otherfile.c:33 应该很好用 是的,-x命令行参数将允许您在GDB启动时执行任意文件,但为每个项目维护.gdbini

我有一个断点列表,每次调试一个特定的程序时,我都要添加这些断点


是否有一种方法可以将所有断点信息放在一个文件中,并在每个调试会话开始时使用它?换句话说,在我发出“运行”命令之前,我是否可以向GDB提供一个包含断点信息的脚本文件?

您可以将所有需要的命令放入一个
.gdbinit
文件,该文件与正在调试的可执行文件位于同一目录中

比如:

b somefile.c:128
b otherfile.c:33
应该很好用

是的,
-x
命令行参数将允许您在GDB启动时执行任意文件,但为每个项目维护
.gdbinit
文件意味着该文件将自动执行(无需指定文件名)。此外,您还可以轻松地将特定于项目的
.gdbinit
文件添加到源代码管理中,这意味着您的所有团队成员都可以使用相同的调试工具。

来自man gdb(1)

  -x file
           Execute GDB commands from file file.
然后,您可以将断点放在一个文件中:

break [file:]function
break [file:]function
...

除了使用外部文件,您还可以保持GDB打开:如果GDB下的二进制文件发生更改,它将重新加载二进制文件和库,而不会在下次运行时丢失断点。

或使用:

gdb --command=commands.gdb ./a.out
其中,
commands.gdb
是一个带有断点的文本文件


--command
可能与
-x

相同。GDB的文档声称可以使用命令“”和“”

但是,这在我的GDB((Gutsy Gibbon))上不起作用。

从GDB 7.2(2011-08-23)开始,该命令是新的。将断点保存到文件后,可以使用命令将其读入以后的GDB会话,然后下次运行GDB时可以使用
-x
选项

save breakpoints <filename>
  Save all current breakpoint definitions to a file suitable for use
  in a later debugging session.  To read the saved breakpoint
  definitions, use the `source' command.
保存断点
将所有当前断点定义保存到适合使用的文件中
在稍后的调试会话中。读取保存的断点
定义时,请使用“源”命令。

我有相同的版本,但它不起作用。我发现这个特性是在gdb版本7.2中添加的。如果编译较新的版本,它会工作。