【发布时间】:2014-08-18 05:19:51
【问题描述】:
我的理解是gdb可以监控一个正在运行的程序的完整状态。我可以保存在断点处暂停的 gdb 会话并稍后恢复会话吗?
我的第一次尝试只是在第一个 gdb 会话中生成核心转储,该会话在断点处暂停,然后使用核心转储启动第二个 gdb 会话。
这导致了以下错误。
Program terminated with signal SIGTRAP, Trace/breakpoint trap.
所以断点信息被插入到程序状态中,有意思。在我第二次尝试时,我做了同样的事情,但这次我在第二次会话中添加了与第一次会话中相同的断点。
Getting gdb to save a list of breakpoints?
我还是遇到了同样的错误。
我可以保存并重新启动 gdb 会话吗?如果有,怎么做?
我不认为这是直接相关的,但我也收到了这个警告。
warning: core file may not match specified executable file.
gdb 是简单地说明这样的事情通常是可能的,还是 gdb 相信这可能发生在正在运行的会话中?我确信生成核心转储的同一可执行文件正在 gdb 下运行。
编辑:对于其他任何出现的人,这个问题:Save a process' memory for later use? 添加到 Mats Petersson 的答案和本文的链接:http://blogs.msdn.com/b/oldnewthing/archive/2004/04/20/116749.aspx,这是一个有趣的阅读。链接的问题还建议将流程包装在 VM 中。
【问题讨论】: