使用gdb调试apache seg错误

时间:2012-10-29 10:43:16

标签: debugging gdb

我的生产服务器上的Apache间歇性地发生故障。我在apache配置中启用了核心转储选项,并有几个转储的核心文件。不幸的是,由于它是生产服务器,因此apache或加载的模块不会使用调试符号进行编译。据我所知,没有调试符号,gdb不能做太多。

我能否至少找出导致seg故障的模块,没有调试符号?如果是这样,怎么样?

[更新] 以下是gdb backtrace的输出

(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错误?

1 个答案:

答案 0 :(得分:1)

快速搜索_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。这应该为您提供更多证据,证明正在发生的事情。