我的生产服务器上的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错误?
答案 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。这应该为您提供更多证据,证明正在发生的事情。