我的程序中一直出现分段错误,但没有生成核心转储文件。ulimit 显示了一个无限的值, ulimit -c unlimited 只是为了确定,它似乎很好。有任何想法吗?
问问题
17295 次
4 回答
5
如果您的程序以 root 身份(或具有 root 权限)运行,请检查:
cat /proc/sys/fs/suid_dumpable
或者如果程序是一个守护进程检查:
getsebool allow_daemons_dump_core
于 2013-03-07T14:47:11.577 回答
3
可能有几个原因
- 对目录没有写权限
- 程序更改工作目录
也在其他地方寻找核心 - 磁盘已满
- ulimit 设置在一个 shell 中,程序在不同的 shell 或环境中启动
于 2013-03-07T13:54:04.470 回答
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
于 2013-03-07T14:05:54.640 回答
-6
分段错误尤其发生在您访问内存中的错误地址时。资源很可能未正确初始化。例如,您可以使用 Valgrind 进行调试。
于 2013-03-07T14:32:21.657 回答