我有一个断点列表,我想在每次调试特定程序时添加这些断点。
有没有办法可以将所有断点信息放在一个文件中,并在每个调试会话开始时使用它?换句话说,我可以在给出'run'命令之前向GDB提供带有断点信息的脚本文件吗?
答案 0 :(得分:28)
来自 man gdb(1):
-x file
Execute GDB commands from file file.
然后您可以将断点放在文件中:
break [file:]function
break [file:]function
...
答案 1 :(得分:25)
您可以将所需的所有命令放入.gdbinit
文件中,该文件与您正在调试的可执行文件位于同一目录中。
类似的东西:
b somefile.c:128
b otherfile.c:33
应该工作得很好。
编辑:是的,-x
命令行参数将允许您在GDB启动时执行任意文件,但为每个项目维护.gdbinit
文件意味着该文件自动执行(无需指定文件名)。此外,您可以轻松地将项目特定的.gdbinit
文件添加到源代码管理中,这意味着您的所有团队成员都可以使用相同的调试工具。
答案 2 :(得分:12)
除了使用外部文件外,您还可以保持gdb打开:如果gdb下的二进制文件发生更改,它将重新加载二进制文件和库,而不会在您下次运行时丢失断点。
答案 3 :(得分:10)
save breakpoints命令是gdb 7.2中的新命令。将断点保存到文件后,可以使用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.
答案 4 :(得分:2)
或使用:
gdb --command=commands.gdb ./a.out
其中commands.gdb
是带有断点的文本文件。
--command
可能与-x
答案 5 :(得分:1)
GDB的文档声称可以使用命令“save breakpoints”和“source”:http://sourceware.org/gdb/current/onlinedocs/gdb/Save-Breakpoints.html#Save-Breakpoints。但是这对我的gdb(7.1-ubuntu)不起作用。