AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 124311
Accepted
blockhead
blockhead
Asked: 2010-03-20 07:51:37 +0800 CST2010-03-20 07:51:37 +0800 CST 2010-03-20 07:51:37 +0800 CST

我需要帮助使用 gdb 调试 apache(未找到调试符号)

  • 772

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

这是一个生产服务器,所以我尝试安装 Apache 和 PHP 的单独副本,并通过gdb.

当我加载然后执行httpd时,我收到错误:gdbrun -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-mode,但我似乎并没有走得太远。

apache-2.2 debugging gdb
  • 4 4 个回答
  • 8169 Views

4 个回答

  • Voted
  1. Best Answer
    mctylr
    2010-03-20T13:30:03+08:002010-03-20T13:30:03+08:00

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

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

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

    段错误发生在启动时、随机时间后、运行某个 Web 应用程序后还是特定时间量(大约每 48 小时)?

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

    我已经使用 Apache httpd 将近 15 年了,而且我从来没有调试过 Apache Web 服务器守护进程本身,所以我很惊讶您似乎需要使用 gdb 来调试它。


    (未找到调试符号)

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

    读取共享库符号时出错:

    此错误与共享(动态链接)库调试符号有关。

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

    我以前没有见过这个错误,可能是因为 Red Hat Enterprise Linux 4 的构建方式不同。DWARF是一种调试信息格式。在 Linux 系统上发现的另一种常见格式是Stabs。基本上似乎暗示共享库也被“剥离”了调试信息。

    更正:这意味着调试器(gdb)无法读取/找到字符串指针(strp)。这可能是由于 GDB错误 7358或编译器/调试器版本不匹配。

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


    我已经尝试使用 --enable-maintainer-mode 进行配置,但我似乎并没有走得太远。

    对不起,这太模糊了,无法帮助您。您需要包含更多有用的详细信息。

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


    考虑使用 PHP 调试器,例如带有 PHP 应用程序或脚本的Xdebug 。


    总结评论

    我将尝试从这里的评论中总结信息:

    • 生成 gdb 回溯(来自 PHP)
    • 需要带有调试功能的 PHP(包括符号)
    • 带有调试功能的 PHP 可以通过使用EXTRA_CFLAGS="-g" make或
    • 最好使用configure --enable-debug( ref ),然后是make

    这似乎已经解决了调试符号。

    • 4
  2. davr
    2010-03-20T12:39:29+08:002010-03-20T12:39:29+08:00

    确保调试符号没有作为 apache 安装过程的一部分被剥离。当它们被复制到 /usr/local/bin 或任何地方时,通常在二进制文件上运行“strip”以删除所述符号。

    • 1
  3. Eddy
    2010-03-20T10:20:31+08:002010-03-20T10:20:31+08:00

    RH 将调试符号打包在单独的 rpm 包中。

    尝试安装这些...

    • 0
  4. Tekhne
    2010-03-20T11:01:09+08:002010-03-20T11:01:09+08:00

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

    • 0

相关问题

  • 在您分发的应用程序中使用 Apache HTTPD 运行 SSL 的最佳方式是什么?

  • 阿帕奇的替代品

  • 如何强制我的网址始终以 www 开头?

  • 在 Linux Xen VPS 上优化 Apache 和 MySQL

  • mod_rewrite 不转发 GET 参数

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve