在任何情况下,是否有可能将程序状态恢复为生成核心文件时的状态?
我问的原因是,为了利用gdb执行函数的能力等等,你需要有一个正在运行的实例。当然应该可以生成相同可执行文件的模拟进程,并将状态设置为核心内容?
如果没有哪种替代方案可以让我想要首先做到这一点?在这种情况下,核心的后向跟踪导致库函数,我想复制输入到这个函数调用,但其中一个输入是复杂的对象,可以很容易地序列化为一个字符串,在运行时调用函数实例但在核心转储中却不是这样。
答案 0 :(得分:7)
理论上可以完全按照你的意愿行事,但是(AFAICT)在GDB
(尚未)中不支持这一点。
最好的办法是使用GDB-7.0
并使用其嵌入式python脚本来重新实现序列化功能。
答案 1 :(得分:2)
核心文件已经是什么了?如果使用原始可执行文件和核心文件
加载gdbgdb myprogram.exe -c mycorefile
然后它会到达崩溃的地方。您可以使用所有常规检查功能来查看变量,查看堆栈跟踪等。
或者我误解了你的问题?