让gdb保存一个断点列表?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (20)

好的,信息中断列出了断点,但不是以与此问题中的--command重用它们的格式。gdb是否有一种方法将它们转储到可再次输入的文件中?有时在调试会话中,需要在构建一组测试断点后重新启动gdb。

编辑: .gdbinit文件与--command具有相同的问题。info break命令不会列出命令,而是一张供人类使用的表格。

详细说明,这里是一个来自信息中断的示例:

(gdb)信息中断
Num Type Disp Enb Address什么
1断点保持y 0x08048517 <foo :: bar(void)+7>
提问于
用户回答回答于

从GDB7.2开始,您现在可以使用保存断点命令。

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) b main
Breakpoint 1 at 0x8049329
(gdb) info break
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x08049329 <main+16>
(gdb) set logging file breaks.txt
(gdb) set logging on
Copying output to breaks.txt.
(gdb) info break
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x08049329 <main+16>
(gdb) q

txt文件现在包含:

Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x08049329 <main+16>

编写一个awk脚本,将其转换为对.gdbinit或者是--command文件很简单。或者,你甚至可以让脚本单独发出。--eval-command到GDB命令行..。

将这个小宏添加到.gdbinit将有助于你完成以下操作:

# call with dump_breaks file.txt
define dump_breaks
    set logging file $arg0
    set logging redirect on
    set logging on
    info breakpoints
    set logging off
    set logging redirect off
end

扫码关注云+社区