每次我的应用程序崩溃时,都不会生成核心转储文件。我记得几天前,它 是 在另一台服务器 上 生成的。我正在使用bash屏幕运行应用程序,如下所示:
#!/bin/bash ulimit -c unlimited while true; do ./server; done
如您所见ulimit -c unlimited,如果要生成核心转储,则在使用哪个选项很重要,但是当遇到分段错误时,它仍然不会生成。我该如何运作?
ulimit -c unlimited
确保当前目录(崩溃时server可能会更改目录)是可写的。如果服务器调用setuid,则该目录必须是该用户可写的。
server
setuid
同时检查/proc/sys/kernel/core_pattern。这可能会将核心转储重定向到另一个目录,并且 该 目录必须是可写的。更多信息在这里。
/proc/sys/kernel/core_pattern