我需要帮助用gdbdebuggingapache(没有finddebugging符号)

我正在尝试debugging在RHEL4上运行的PHP / Apache中的段错误。

这是一个生产服务器,所以我试图安装一个单独的副本的Apache和PHP,并通过GDB运行Apache。

当我通过gdb加载httpd,然后run -X ,我得到错误(no debugging symbols found)...Error while reading shared library symbols: Dwarf Error: Cannot handle DW_FORM_strp in DWARF reader.

Apache手册说了一些关于将EXTRA_CFLAGS设置为“-g”的内容,而且我尝试使用–enable-maintainer模式进行configuration,但是我似乎并没有太多进展。

debugging复杂的多进程/线程networking守护进程应用程序(如Apache)很困难,通过gdb完成模块(如可能包括mod_PHP)。

你为什么认为错误 Apache的httpd ,而不是应用程序(例如PHP脚本)或模块(例如mod_PHP )?

什么是确切的段错误信息?

段落错误是在启动时,在一段时间之后,在某个networking应用程序运行之后,或一段特定的时间( 大约每48小时 )发生的?

您是否在Apacheconfiguration文件中增加或添加了Apache httpd Log Level指令以获取更多信息? 尝试infodebug的最多信息。

我已经使用Apache httpd近15年了,而且我从来没有必要去debuggingApache web服务器守护进程本身,所以我很惊讶你似乎需要使用gdb进行debugging。


(没有finddebugging符号)

这意味着debugging符号不包含在二进制可执行文件中。 通常情况下,编译器没有启用debugging( -g标志和gcc),和/或安装进程strip执行可执行文件,使其在运行时占用更less的内存。

读取共享库符号时出错:

这个错误是关于共享(dynamic链接)库debugging符号。

矮人错误:无法在DWARF阅读器中处理DW_FORM_strp。

我之前没有看到这个错误,可能是因为红帽企业Linux 4的构build方式不同而发生的。 DWARF是一种debugging信息格式。 在Linux系统上发现的另一种常见格式是Stabs 。 基本上似乎是build议共享库也是“剥离”debugging信息。

更正:这意味着debugging器( gdb )不能读取/查找string指针( strp )。 这可能是由于GDB Bug 7358或编译器/debugging器版本不匹配造成的。

共享库通常将debugging信息(符号)放在一个单独的包中。 例如,我相信RHEL GNU标准C库(glibc)debugging信息位于名为glibc-debug的包中。 您将需要安装Apache httpd使用的库的debugging信息。 检查Apache rpm软件包的库依赖关系,以获取可执行文件所依赖的库列表 – rpm -qR package-namerpm -qpR <rpm-file>


我已经尝试使用–enable-maintainer模式进行configuration,但是我似乎并没有太多进展。

我很抱歉,但这太模糊了,以帮助你。 你需要包含更多有用的细节。

更新: automake 维护者模式的使用主要是用于打包或开发,而不是debuggingbuild议。


考虑使用PHPdebugging器,如Xdebug与PHP应用程序或脚本。


总结评论

我会尽量从这里的评论总结信息:

  • 生成gdb回溯 (来自PHP)
  • 需要使用debugging构build的PHP(包含符号)
  • 带debugging的PHP可以通过使用EXTRA_CFLAGS="-g" make或来构build
  • 最好使用configure --enable-debug ( ref ),然后make

这似乎解决了debugging符号。

RH将debugging符号打包在不同的rpm包中。

尝试安装这些…

我认为包含debugging信息的RPM被命名为<pkg>-debuginfo-<...> 。 您可以使用Fedora 12下的debuginfo-install <pkg>命令安装它们,这也可能在Red Hat系统下运行。

确保debugging符号不被剥离,作为Apache安装过程的一部分。 通常在二进制文件上运行“strip”以将其复制到/ usr / local / bin或任何地方时删除所述符号。