首页 文章

分段错误,没有核心转储[重复]

提问于
浏览
4

这个问题在这里已有答案:

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

4 回答

  • 1

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

    cat /proc/sys/fs/suid_dumpable

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

    getsebool allow_daemons_dump_core

  • 3

    可能有几个原因

    • 没有对目录的写访问权限

    • 程序更改工作目录
      在其他地方寻找核心

    • 磁盘已满

    • ulimit在一个shell中设置,程序在不同的shell或环境中启动

  • -3

    要解决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
    
  • 4

    发生分段错误,特别是您访问内存中的错误地址 . 资源不正确地初始化是非常可能的 . 例如,您可以使用Valgrind进行调试 .

相关问题