将gdb附加到httpd子进程之一,然后重新加载或继续工作并等待崩溃,然后查看回溯。做这样的事情:
$ ps -ef|grep httpd0 681 1 0 10:38pm ?? 0:00.45 /Applications/MAMP/Library/bin/httpd -k start501 690 681 0 10:38pm ?? 0:00.02 /Applications/MAMP/Library/bin/httpd -k start
…
现在将gdb附加到子进程之一,在本例中为PID 690(列为UID,PID,PPID等)
$ sudo gdb(gdb) attach 690Attaching to process 690.Reading symbols for shared libraries . doneReading symbols for shared libraries ....................... done0x9568ce29 in accept$NOCANCEL$UNIX2003 ()(gdb) cContinuing.
等待崩溃…然后:
(gdb) backtrace
要么
(gdb) backtrace full
应该给你一些线索,这是怎么回事。如果提交错误报告,则应包括回溯。
如果崩溃难以重现,则最好将Apache配置为仅使用一个子进程来处理请求。配置是这样的:
StartServers 1MinSpareServers 1MaxSpareServers 1


![apache error.log中的“ [notice]子pid XXXX退出信号分段错误(11)” apache error.log中的“ [notice]子pid XXXX退出信号分段错误(11)”](http://www.mshxw.com/aiimages/31/442974.png)
