2012-07-19 44 views
1

我正在测试应用程序,当应用程序消耗大部分可用内存时,内核会杀死我的进程。但是我希望这个过程死掉,核心文件也会生成,对于调查提出的建议。我正在使用redhat 5.4如何防止linux杀死我的进程并生成核心文件

有没有办法做到这一点?

+0

我已经设置了ulimit -c unlimited – tune 2012-07-19 07:32:59

回答

1

从您的“大部分可用内存”描述中,我假设您的系统内存不足,并且内存不足处理器会导致您的进程中断。它被SIGTERM杀死,所以你在正常情况下不会得到核心转储。

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

0

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

SIGQUIT可以kill -SIGQUIT (process_id)或发送,如果程序与键盘相关联,通过键入按Ctrl - \

0

你应该找哪些信号你的程序将获得当OOM发生。 然后用信号功能设置处理程序