从生产中行为不当的 Apache 服务器获取有意义的 gdb 回溯的最佳方法是什么?
[Tue Aug 02 16:07:12 2011] [notice] child pid 27681 exit signal Segmentation fault (11)
这可能是某些 Apache 模块在做坏事,但我需要符号 gdb 回溯来开始调试什么和在哪里。
如何在 Ubuntu 上为 Apache 启用调试符号
如何从 Apache 子进程中提取一个且仅一个核心转储
如何在 gdb 中重新打开此文件
Ubuntu 8.04/Linux。
答案1
看配置 Apache Web 服务器以在发生分段错误时进行核心转储。
您可能还需要将核心转储大小限制设置为无限制/etc/security/limits.conf
:
* hard core unlimited
登录,检查核心大小没有受到限制ulimit -a
,然后重新启动 apache。
要分析核心文件,启动 gdb:
gdb /usr/lib/apache2/mpm-worker/apache2 /path/to/core.dump
gdb 命令bt
打印出堆栈跟踪。