Apache分段错误:如何用gdb获取更多的信息?

我在apache的error_log中看到以下错误。 它是完全随机的,但是当它发生时,它会在error_log中打印10-20行。

Apache: [core:notice] [pid ***] AH00052: child pid *** exit signal Segmentation fault (11) 

我正在运行Apache 2.4.12和PHP 5.4.36。

我试图用gdb 7.8来收集更多的信息。 附加到apache的进程后,我等待,最后得到了一个分段错误:

 (gdb) attach 205907 Attaching to process 205907 Reading symbols from /usr/local/apache2/bin/httpd...done. Reading symbols from /lib64/libpcre.so.0...(no debugging symbols found)...done. ... lots of reading symbols ... (gdb) c Continuing. Program received signal SIGSEGV, Segmentation fault. 0x00007f7508acc4fe in __longjmp () from /lib64/libc.so.6 (gdb) backtrace #0 0x00007f7508acc4fe in __longjmp () from /lib64/libc.so.6 #1 0xb7e28fbf1b781194 in ?? () Backtrace stopped: Cannot access memory at address 0xdf5a8fbf24c295cc (gdb) backtrace full #0 0x00007f7508acc4fe in __longjmp () from /lib64/libc.so.6 No symbol table info available. #1 0xb7e28fbf1b781194 in ?? () No symbol table info available. Backtrace stopped: Cannot access memory at address 0xdf5a8fbf24c295cc 

不幸的是,输出不是我所期望的。 我应该怎么做才能从细分故障中获得更多信息?

既然你在libc里面有sig11,并且不可能有如此简单的触发错误,我build议你使用memtest86 +来testing你的服务器的内存。

您需要libc的debugging版本,并可能为/lib64/libpcre.so.0 …从您输出:

/lib64/libpcre.so.0...(no debugging symbols found)

我希望,这个post可以为你有用:

如何使用libc的debugging版本

[ https://stackoverflow.com/questions/10000335/how-to-use-debug-version-of-libc%5D