我在我的程序中一直得到一个分段错误,但没有生成任何核心转储文件。 ulimit显示一个无限的值,我已经执行了ulimit -c无限以确保它正常运行。有什么想法吗?
cat /proc/sys/fs/suid_dumpable
如果程序是守护进程,请检查以下内容:
getsebool allow_daemons_dump_core
并允许守护进程转储核心:
setsebool -P daemons_dump_core 1
/proc/sys/fs/suid_dumpable
输出为 2
,而且我找不到 getsebool
。我该怎么办? - Alejandro Galera出现上述问题的原因可能有几个:
#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进行调试。