如何在 gdb 会话中保存 gdb 设置信息?

How to save gdb setup information inside gdb session?

我们可以使用.gdbinit 或命令文件来启动带有预设命令和宏定义的gdb。但我的情况是:

我已经启动了 gdb 并定义了一些 "breakpoints"、"commands"、"defines",如何将这些调试会话信息保存到文件中(.gdbinit 或命令文件) ,通过 gdb 命令?我不想追溯 gdb 命令历史并复制粘贴所有这些输入。

gdb 支持吗? 谢谢。

您可以使用 GDB 日志记录功能。 GDB 文档中提供了以下选项。

https://sourceware.org/gdb/current/onlinedocs/gdb/Logging-Output.html#Logging-Output

set logging on
           Enable logging. 
set logging off
           Disable logging. 
set logging file file
           Change the name of the current logfile. The default logfile is gdb.txt. 
set logging overwrite [on|off]
           By default, gdb will append to the logfile. Set overwrite if you want set logging on to overwrite the logfile instead. 
set logging redirect [on|off]
           By default, gdb output will go to both the terminal and the logfile. Set redirect if you want output to go only to the log file. 
show logging
          Show the current values of the logging settings.

您可以从 gdb 中部分完成此操作,但除此之外,您有点靠自己了。

你能做的就是保存断点。很简单:

(gdb) save breakpoints /tmp/whatever-file

遗憾的是,目前没有办法保存 define -- 有 a gdb bug 可以保存。

在这种情况下,您可以做的一件事是使用 show user 找到您的命令,然后将其剪切并粘贴到一个文件中。或者也许可以从 Python.

实现假设的 save user