用GDB调试Apache SEG故障



我的生产服务器上的apache间歇性故障。我已经在Apache配置中启用了Core Dump选项,并具有多个已转储的Core文件。不幸的是,由于它是生产服务器,Apache或已加载的模块没有使用调试符号编译。据我了解,没有调试符号,GDB无法做太多。

我至少可以找出哪些模块导致SEG故障,而没有调试符号?如果是这样,如何?

[update] 以下是GDB回溯的输出

(gdb) bt full
#0  0xb7f1f832 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
No symbol table info available.
#1  0xb7be82bc in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
No symbol table info available.
#2  0xb771652a in ?? () from /usr/local/apache/modules/mod_pagespeed.so
No symbol table info available.
#3  0xb75df576 in ?? () from /usr/local/apache/modules/mod_pagespeed.so
No symbol table info available.
#4  0xb7715c20 in ?? () from /usr/local/apache/modules/mod_pagespeed.so
No symbol table info available.
#5  0xb7be4a49 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#6  0xb7b2a63e in clone () from /lib/libc.so.6
No symbol table info available.

这是否意味着/lib/ld-linux.so.2引起了seg故障?

快速搜索_dl_sysinfo_int80显示以下线程...

http://linux.derkeiler.com/newsgroups/comp.os.linux.development.apps/2005-02/0462.html

回答您的问题,我怀疑/lib/ld-linux.so.2会导致分割故障。这只是等待的众多线程之一。

运行thread apply all bt full以获取崩溃时运行的所有线程的堆栈跟踪。然后应清楚哪个线程导致segfault。这应该为您提供更多有关正在发生的事情的证据。

最新更新