如何防止linux杀死我的进程并生成核心文件

时间:2012-07-19 07:18:11

标签: linux core-file

我正在测试一个应用程序,当应用程序占用大部分可用内存时,内核会终止我的进程。但是我想让流程死掉并生成核心文件,供调查人员提出。我正在使用redhat 5.4

有没有这样做?

3 个答案:

答案 0 :(得分:1)

从“大部分可用内存”描述中,我假设您的系统内存不足,而内核内存处理程序会终止您的进程。它会被SIGTERM杀死,因此在正常情况下你不会获得核心转储。

您可以通过在程序中处理SIGTERM并在信号处理程序中向您的进程发送SIGSEGV来获取核心转储,从而触发核心转储。 OTOH,在内存不足的情况下,这可能会导致许多其他进程死亡,这些进程也会被OOM处理程序杀死。

答案 1 :(得分:0)

许多信号的默认操作是核心转储。如果程序没有覆盖Linux缺省信号处理程序,如果设置了正确的ulimit,则可以使用SIGQUIT进行核心转储。

SIGQUIT可以与kill -SIGQUIT (process_id)一起发送,或者,如果程序与键盘相关联,则键入Ctrl- \

答案 2 :(得分:0)

你应该找到你的程序在OOM发生时会收到哪个信号。 然后使用signal函数设置处理程序