CoreDumpDirectory不工作在Ubuntu; 用php获取分段错误

我正在尝试解决分段错误。 这个消息出现在我的apache-error.log中:

[注意]儿童pid 3979退出信号分割故障(11)

我试过禁用一些Apache和PHP模块,但我仍然得到相同的错误。

我也试过把这个放在apache2.conf中:

CoreDumpDirectory / tmp / apache2-gdb-dump

然后chmod 777,chown www-data …这样服务器就可以写了。

我可以看到没有核心转储文件给我提示错误。

有没有人有一个想法,为什么CoreDumpDirectory不工作在Ubuntu上?

答案:$ ulimit – 核心文件大小
(块,-c)无限数据段大小
(千字节,-d)无限调度优先级(-e)0文件大小(块,-f)无限制待处理信号(-i)15863最大locking内存
(千字节,-1)32最大内存大小
(千字节,-m)无限打开的文件
(-n)1024个pipe道大小(512字节,-p)8个POSIX消息队列
(字节,-q)819200实时优先级(-r)0堆栈大小
(千字节,-s)8192 cpu时间
(秒,-t)无限制最大用户进程(-u)15863虚拟内存(kbytes,-v)无限制文件锁
(-x)无限制

我终于可以看到Apache在Ubuntu的核心转储:

  1. 编辑/etc/default/apport
  2. 编辑apache2.conf:

      CoreDumpDirectory /tmp/apache2-gdb-dump 
  3. 确保Apache可以写入:

     # chmod 777 /tmp/apache2-gdb-dump 
  4. 删除核心转储大小限制:

     # ulimit -c unlimited 
  5. (可选)更改核心转储的名称模式:

     # echo 'coredump-%e.%p' > /proc/sys/kernel/core_pattern 

要分析转储使用gdb

 $ gdb apache2 /tmp/apache2-gdb-dump/coredump-xx 

要查看堆栈跟踪详细信息,请在gdb中:

 gdb> where 

我做了,我得到了核心转储。 但是,我的问题没有通过查看coredump来解决; 这显然是我的PHP脚本中的一个问题。

更多信息: http : //matrafox.info/apache-child-pid-exit-signal-segmentation-fault.html

核心转储默认在Ubuntu上禁用

尝试这个:

 ulimit -c unlimited 

“ulimit -a”告诉你什么是当前限制(0表示禁用)

请注意,重启后,/ tmp中的子目录将被删除,导致Apache由于配置错误而无法启动。

在第二个音符,chowning是不必要的。 / tmp被chmodded 777所以任何人都可以在那里读/写。

@arod sudo ulimit -c不起作用,因为-c也是sudo的参数。 你需要sudo -s,然后ulimit -c