我一直在我的程序中出现分段错误,但是没有生成核心转储文件。 ulimit显示的值是无限的,确实是ulimit -c unlimited,看起来没有问题。 有任何想法吗?
如果你的程序以root身份运行(或者具有root权限),请检查:
cat /proc/sys/fs/suid_dumpable
或者如果程序是守护进程检查:
getsebool allow_daemons_dump_core
可能有几个原因
为了解决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
发生分段错误尤其是您访问内存中的错误地址。 资源不正确的初始化是非常可能的。 例如,您可以使用Valgrind进行调试。