我寻找过与我类似的问题,但我发现的最接近的是GDB 出现 SegFault 后继续调试 https://stackoverflow.com/q/58374854/1667513
我的目标是从 coredump 调用 GDB 中的函数。我有一个 C++ 类型,其中包含operator<<
已定义,我想漂亮地打印这种类型,而不必在 python 中编写漂亮的打印机。
从我到目前为止发现的情况来看,GDB 处理 coredump 的方式与常规处理方式不同。下等人其具有主动执行,因此无法调用函数(正如这个答案 https://stackoverflow.com/a/27189722/1667513这说明你不能使用continue用于核心转储)。
虽然我可以理解为什么默认情况下会出现这种情况,但是可以修补 GDB 以将 coredump 加载到内存中并将其作为正在运行的进程调用吗?如果程序由于以下原因终止段。过错那么可以在 GDB 中加载核心后手动更改损坏的路径,甚至可能继续执行程序。
虽然我可以理解为什么默认情况下会出现这种情况,但是可以修补 GDB 以将 coredump 加载到内存中并将其作为正在运行的进程调用吗?
In theory, 这个有可能。在practice,您会发现这是一项重大任务,(可能)需要您至少几周甚至几个月的时间。
我想漂亮地打印这种类型,而不必用 python 编写漂亮的打印机。
我可以向你保证,用 Python 编写一个漂亮的打印机是一个简单的事情lot更少的工作。
如果程序由于 Seg 而终止。如果出现故障,则可以在将核心加载到 GDB 中后手动更改损坏的路径,甚至可能在之后继续执行程序。
如果程序使用未在核心转储中捕获的任何操作系统级资源,则不会。所有套接字、文件、SysV IPC 等都将消失。这个答案 https://stackoverflow.com/a/24446209/50617 agrees.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)