【问题标题】:gdb coredump - invoke function or continue executiongdb coredump - 调用函数或继续执行
【发布时间】:2020-10-06 16:34:12
【问题描述】:

我一直在寻找与我类似的问题,但我找到的最接近的是Continue debugging after SegFault in GDB

我的目标是从核心转储调用 GDB 中的函数。我有一个 C++ 类型,它定义了 operator<<,我想漂亮地打印这种类型,而不必在 python 中编写漂亮的打印机。

从我目前发现的情况来看,GDB 对 coredump 的处理方式似乎与常规的 inferiors 不同,后者具有主动执行功能,因此无法调用函数(this answer 已确认您不能使用 continue 进行核心转储)。

虽然我可以理解为什么默认情况下会出现这种情况,但是否可以修补 GDB 以将 coredump 加载到内存中并将其作为正在运行的进程调用?如果程序因 Seg 终止。故障 那么可以在 GDB 中加载内核后手动更改损坏的路径,甚至可能在之后继续执行程序。

【问题讨论】:

    标签: linux process segmentation-fault gdb coredump


    【解决方案1】:

    虽然我可以理解为什么默认情况下会出现这种情况,但是否可以修补 GDB 以将 coredump 加载到内存中并将其作为正在运行的进程调用?

    在理论上,这是可能的。在实践中,您会发现这是一项艰巨的任务,即使不是几个月,也可能(可能)至少需要几周时间。

    我想漂亮地打印这种类型,而不必在 python 中编写漂亮的打印机。

    我可以向您保证,用 Python 编写漂亮的打印机是一项大量的工作。

    如果程序因 Seg 终止。故障则可以在 GDB 中加载内核后手动更改损坏的路径,甚至可能在之后继续执行程序。

    如果程序使用核心转储中未捕获的任何操作系统级资源,则不会。所有套接字、文件、SysV IPC 等都将消失。 This answer 同意。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      相关资源
      最近更新 更多