分段错误,没有核心转储
这可能有几个原因
- 到目录
- 程序改变工作目录
寻找其他地方的核心没有写访问过 - 磁盘已满
- 的ulimit被设置在一个外壳中并且程序在不同的外壳或环境中启动
+程序是一个守护进程,但OP会为其当前shell会话更改ulimit设置。 – Slava 2013-03-07 13:57:47
@Slava谢谢,补充说。 – 2013-03-07 14:34:46
要解决的shell会话问题,提供你不反对被根测试:特别是你在内存访问错误的地址发生
#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进行调试。
这是如何解决没有产生核心转储的问题? – us2012 2013-03-07 14:45:13
分配内存的问题不是语法错误。 – user1929959 2013-03-07 14:53:37
如果你的程序以root身份运行(或具有root功能)检查:
cat /proc/sys/fs/suid_dumpable
,或者如果程序是一个守护进程检查:
getsebool allow_daemons_dump_core
Mayby首先我们看一些代码? – Blood 2013-03-07 13:47:45
这很可能是一个空指针或访问数组之外。 – QuentinUK 2013-03-07 13:48:22
在调试器中运行该程序,以便在故障发生时您会中断。 – unwind 2013-03-07 13:48:40