37

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

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

4

6 回答 6

32

man gdb(1)

  -x file
           Execute GDB commands from file file.

然后,您可以将断点放在一个文件中:

break [file:]function
break [file:]function
...
于 2009-02-01T15:16:01.760 回答
30

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

就像是:

b somefile.c:128
b otherfile.c:33

应该工作得很好。

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

于 2009-02-01T15:15:00.343 回答
13

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

于 2009-02-01T15:20:19.850 回答
10

自GDB 7.2 (2011-08-23) 起,保存断点命令是新的。将断点保存到文件后,您可以使用source命令将它们读入稍后的 GDB 会话,然后在下次运行 GDB 时使用该-x <filename>选项。

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.
于 2010-10-21T03:57:16.183 回答
3

或使用:

gdb --command=commands.gdb ./a.out

commands.gdb带有断点的文本文件在哪里。

--command可能与-x

于 2009-02-01T15:22:25.350 回答
1

GDB 的文档声称可以使用命令“保存断点”和“”。

但是,这不适用于我的 GDB(Ubuntu 7.10 (Gutsy Gibbon))。

于 2010-08-22T10:32:01.157 回答