CoreDumpDirectory不能用于ubuntu; 用php获取分段错误

aro*_*rod 6 php apache ubuntu

我正在尝试解决分段错误.此消息显示在我的apache-error.log中:

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

我试过禁用一些apache和php模块,但我仍然得到同样的错误.

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

CoreDumpDirectory/tmp/apache2-gdb-dump

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

我看不到核心转储文件给我一个关于错误的提示.

有没有人知道为什么CoreDumpDirectory不能在Ubuntu上工作?

答案:$ ulimit -a核心文件大小
(块,-c)无限数据seg大小
(kbytes,-d)无限制调度优先级(-e)0文件大小(块,-f)无限制挂起信号(-i)15863 max锁定内存
(kbytes,-l)32最大内存大小
(kbytes,-m)无限制打开文件
(-n)1024管道大小(512字节,-p)8 POSIX消息队列
(字节,-q)819200实时优先级(-r)0堆栈大小
(kbytes,-s)8192 cpu time
(seconds,-t)无限制最大用户进程(-u)15863虚拟内存(kbytes,-v)无限制文件锁
(-x)无限制

aro*_*rod 11

我终于能够在Ubuntu中看到Apache的核心转储:

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

      CoreDumpDirectory /tmp/apache2-gdb-dump
    
    Run Code Online (Sandbox Code Playgroud)
  3. 确保Apache可以写入:

    # chmod 777 /tmp/apache2-gdb-dump
    
    Run Code Online (Sandbox Code Playgroud)
  4. 删除核心转储大小限制:

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

    # echo 'coredump-%e.%p' > /proc/sys/kernel/core_pattern
    
    Run Code Online (Sandbox Code Playgroud)

分析转储使用情况gdb:

$ gdb apache2 /tmp/apache2-gdb-dump/coredump-x.x
Run Code Online (Sandbox Code Playgroud)

要在gdb中查看stacktrace详细信息:

gdb> where
Run Code Online (Sandbox Code Playgroud)

我这样做了,我获得了核心转储.然而,通过查看coredump我的问题并没有解决; 这显然是我的PHP脚本中的一个问题.

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

  • 你在/ etc/default/apport中有什么变化? (3认同)
  • "gzb":你的意思是gdb? (3认同)