我一直在程序中遇到分段错误,但是没有生成核心转储文件。 ulimit显示无限制的值,ulimit -c无限只是为了确定,它看起来很好。有什么想法吗?
答案 0 :(得分:4)
如果您的程序以root用户身份运行(或使用root功能),请检查:
cat /proc/sys/fs/suid_dumpable
或者如果程序是守护进程检查:
getsebool allow_daemons_dump_core
答案 1 :(得分:3)
可能有几个原因
答案 2 :(得分:1)
要解决shell会话问题,假设您不反对成为root用户进行测试:
#ifdef DEBUG
// Enable core dumps
struct rlimit corelim;
corelim.rlim_cur = -1;
corelim.rlim_max = -1;
if (setrlimit (RLIMIT_CORE, &corelim) != 0)
{
log_error ("Couldn't set core limit");
}
#endif
答案 3 :(得分:-3)
特别是在内存中访问错误的地址时会发生分段错误。资源不正确地初始化是非常可能的。例如,您可以使用Valgrind进行调试。