这个问题在这里已有答案:
我一直在程序中遇到分段错误,但没有生成核心转储文件 . ulimit显示无限制的值,ulimit -c无限只是为了确定,它看起来很好 . 有任何想法吗?
如果您的程序以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进行调试 .
4 回答
如果您的程序以root用户身份运行(或使用root功能),请检查:
cat /proc/sys/fs/suid_dumpable
或者如果程序是守护进程检查:
getsebool allow_daemons_dump_core
可能有几个原因
没有对目录的写访问权限
程序更改工作目录
在其他地方寻找核心
磁盘已满
ulimit在一个shell中设置,程序在不同的shell或环境中启动
要解决shell会话问题,请不要反对以root身份进行测试:
发生分段错误,特别是您访问内存中的错误地址 . 资源不正确地初始化是非常可能的 . 例如,您可以使用Valgrind进行调试 .