分段故障,没有核心转储



我的程序中一直出现分段错误,但没有生成核心转储文件。Ulimit显示了一个无限的值,如果Ulimit -c无限只是为了确定,它看起来很好。什么好主意吗?

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

cat /proc/sys/fs/suid_dumpable

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

getsebool allow_daemons_dump_core

和允许守护进程转储核心:

setsebool -P daemons_dump_core 1

可能有以下几个原因

  • 没有对目录
  • 的写访问权限
  • 程序更改工作目录
    在其他地方也寻找核心
  • 磁盘已满
  • 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进行调试。

相关内容

  • 没有找到相关文章

最新更新