1

我的生产服务器上的 Apache 间歇性地出现段错误。我在 apache 配置中启用了核心转储选项,并且有几个转储的核心文件。不幸的是,由于它是生产服务器,apache 或加载的模块没有使用调试符号编译。据我了解,如果没有调试符号,gdb 就不能做很多事情。

在没有调试符号的情况下,我至少可以找出导致段错误的模块吗?如果是这样,怎么做?

[更新] 以下是 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 错误?

4

1 回答 1

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。这应该为您提供更多关于正在发生的事情的证据。

于 2012-10-29T12:11:30.453 回答