【发布时间】:2018-03-08 10:40:41
【问题描述】:
我想在进程退出时转储它的内存。我见过的所有使用gcore、gdb 甚至procdump for linux 的解决方案都在执行过程中转储核心,而不是在它终止时转储
Procdump for windows 对此有一个非常优雅的解决方案,即-t 将允许 procdump 在进程退出时创建转储。
我偶然发现了ulimit -c unlimited,但这又只会为非优雅退出生成转储。
我想要转储的进程可以是任何进程,而不是我的应用程序。
【问题讨论】:
-
但是当进程退出时,没有什么可以转储的,因为进程已经不存在了。 “进程退出”是什么意思?
-
为您的应用程序安装信号处理程序,当它即将退出时,只需使用 C 代码转储,以下链接在 C stackoverflow.com/questions/3342335/dump-memory-of-a-process 中执行此操作
-
@ks1322,当进程退出时,我的意思是当它即将退出时。正是 windows 的 procdump
-t选项的作用。 -
@PrabhakarLad,我需要转储的不是我的进程内存。它可以是任何进程,我只需要一个进程ID并在进程即将退出时立即转储内存。
-
编写一个 c 应用程序(安装信号处理程序 SIGCHILD),fork 一个您想要监控的进程并参考我之前帖子中的链接来转储内存。
标签: linux ulimit procdump gcore