加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

如何从已停止的程序(linux)获取核心转储

发布时间:2020-12-14 00:03:27 所属栏目:Linux 来源:网络整理
导读:我有一个程序,由kill -STOP停止.我想在不运行的情况下对其进行核心转储(程序必须一直停止;如果它将收到SIGCONT,它将在没有coredump的情况下死掉).我怎样才能得到一个coredump? 服用coredump后,是否可以将程序保持在当前状态?这是一种非常罕见的情况,我无法
我有一个程序,由kill -STOP停止.我想在不运行的情况下对其进行核心转储(程序必须一直停止;如果它将收到SIGCONT,它将在没有coredump的情况下死掉).我怎样才能得到一个coredump?

服用coredump后,是否可以将程序保持在当前状态?这是一种非常罕见的情况,我无法重现它,但我必须对其进行分析.

谢谢

更新:gcore不起作用. Gdb(甚至root)无法附加到已停止的进程(在ptrace PTRACE_ATTACH上永远等待).甚至dd都无法从/ proc / 99999 / mem中读取/ proc / 99999 / mem(错误是没有这样的过程).

如果我尝试将gdb附加到进程并将SIGCONT发送到已停止的进程,我得到了

path... linux-nat.c:####: internal-error: linux_nat_attach: Assertion `pid == GET_PID (inferior_ptid) && WIFSTOPPED (status) && WSTOPSIG (status) == SIGSTOP' failed.
A problem internal to GDB has been detected,further debugging may prove unreliable.
A problem internal to GDB has been detected,further debugging may prove unreliable.

如果我去gdb并保存核心,它将被破坏. “无法从内存中读取有效的目标文件图像.”

解决方法

使用gdb附加到当前进程并发出generate-core-file命令.

或者您可以运行gcore并将进程ID作为参数提供.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读