分割错误,没有核心转储

我一直在我的程序中出现分段错误,但是没有生成核心转储文件。 ulimit显示的值是无限的,确实是ulimit -c unlimited,看起来没有问题。 有任何想法吗?

如果你的程序以root身份运行(或者具有root权限),请检查:

cat /proc/sys/fs/suid_dumpable

或者如果程序是守护进程检查:

getsebool allow_daemons_dump_core

可能有几个原因

  • 没有写目录的权限
  • 程序改变工作目录
    也在其他地方寻找核心
  • 磁盘已满
  • ulimit被设置在一个shell中,程序在不同的shell或环境中启动

为了解决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进行调试。