强制从FreeBSD上正常运行的活动程序转储核心

时间:2011-07-03 05:05:55

标签: freebsd coredump

我正在为FreeBSD上的服务器编写错误处理代码。对于非常严重的错误,我希望通过立即终止来避免数据损坏。这很容易,exit(3)。在我退出之前,我输出了导致我的相关变量。然而,理想情况下,这种终止将伴随.core,以便我可以充分调查是什么让我陷入了这种灾难性(并且可能难以复制)的状态。

我如何强制这种情况发生?

4 个答案:

答案 0 :(得分:35)

kill -QUIT process_id将导致正在运行的进程发生核心转储(假设资源限制允许)。

或者看man 3 abort导致程序自行转储。

已添加:从交互式shell中,可以使用退出键中止正在运行的程序,通常是 Ctrl + \ ,发送SIGQUIT就像更常见的 Ctrl + C 发送SIGINT一样。这与kill -QUIT…相同,如果你在控制终端上,它就更容易输入。如果您的默认退出密钥不同,请参阅man 1 stty

答案 1 :(得分:3)

This帮助了我! kill -11总是对我有用。 11是SIGSEGV(无效的内存引用)

答案 2 :(得分:2)

您可能还想看看gcore(1)(http://man.freebsd.org/gcore)。

答案 3 :(得分:1)

关于sles12 ..下面的代码对我有用:

kill -11

先前的建议没有任何作用。