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

Nek*_*ios 27 coredump freebsd

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

我怎么能强迫这种情况发生?

msw*_*msw 36

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

或者看看man 3 abort是否导致程序自行转储.

补充:从交互式shell中,可以使用退出键(通常为Ctrl+)中止正在运行的程序\,这会发送SIGQUIT,就像更常见的Ctrl+ C发送SIGINT一样.kill -QUIT…如果您在控制终端上,这与更容易输入相同.查看man 1 stty您的默认退出键是否不同.

  • 我认为你的问题是使用gdb:你需要从`where`backtrace中选择一个框架来为变量名称提供范围.请参阅http://sourceware.org/gdb/current/onlinedocs/gdb/Selection.html#Selection (2认同)

Aad*_*hri 6

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


小智 5

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