让gdb保存一个断点列表?
好的,信息中断列出了断点,但不是以与此问题中的--command重用它们的格式。 gdb是否有一种方法将它们转储到可再次输入的文件中? 有时在调试会话中,有必要在建立一组测试断点后重新启动gdb。
编辑: .gdbinit文件与--command具有相同的问题。 info break命令不会列出命令,而是一张供人类使用的表格。
详细说明,这里是一个来自信息中断的示例:
(gdb) info break Num Type Disp Enb Address What 1 breakpoint keep y 0x08048517 <foo::bar(void)+7>
从gdb 7.2开始,您现在可以使用save breakpoints命令。
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现在支持直接保存。 看到这个答案。
您可以使用日志记录:
(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
文件breaks.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
将gdb命令和断点放在.gdbinit文件中,就像您可以在gdb>提示符处键入它们一样,gdb将在启动时自动加载并运行它们。 这是一个按目录的文件,因此您可以为不同的项目使用不同的文件。
链接地址: http://www.djcxy.com/p/24309.html