我可以coredump阻塞磁盘活动的进程(最好不要杀死它)吗?

时间:2013-03-22 09:58:22

标签: linux cpu-registers coredump

我想转储正在运行的进程的核心,根据/proc/<pid>/status,当前阻止磁盘活动。实际上,它正忙于在GPU上工作(应该是4个小时的工作,但现在已经花了很长时间)。我想知道这个过程的工作有多少,所以能够转储进程的内存是件好事。但是,据我所知,“阻止磁盘活动”意味着不可能以任何方式中断该过程,并且可以重新集中进程。使用gdb需要中断并暂时停止进程才能通过ptrace连接,对吧?

我知道我只能以root身份阅读/proc/<pid>/{maps,mem}以获得(可能不一致的)内存状态,但我不知道如何获取进程的用户空间CPU寄存器值...他们留下来当进程在内核中时,同样吗?

1 个答案:

答案 0 :(得分:3)

您可以在程序上运行gcore。它基本上是一个附加GDB的包装器,使用gcore命令,并再次分离。

这可能会中断您的IO(就像它收到一个信号一样),但如果写得正确,您的程序可能会重新启动它(由于默认处理,这种情况可能会发生)。