分段错误,没有核心转储

时间:2013-03-07 13:46:12

标签: c++ c linux segmentation-fault coredump

我一直在程序中遇到分段错误,但是没有生成核心转储文件。 ulimit显示无限制的值,ulimit -c无限只是为了确定,它看起来很好。有什么想法吗?

4 个答案:

答案 0 :(得分:4)

如果您的程序以root用户身份运行(或使用root功能),请检查:

cat /proc/sys/fs/suid_dumpable

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

getsebool allow_daemons_dump_core

答案 1 :(得分:3)

可能有几个原因

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

答案 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进行调试。