【问题标题】:Dwarf Error: Can't read DWARF data from '/tmp/spyauth787438238Dwarf 错误:无法从 '/tmp/spyauth787438238 读取 DWARF 数据
【发布时间】:2015-04-26 20:15:50
【问题描述】:

我正在尝试使用 GDB 调试 C++ 代码。我可以运行调试器,设置断点,也可以正确命中断点。但是当我尝试在断点被命中时执行“下一个”命令时,它会引发以下错误:

Dwarf 错误:无法从 '/tmp/spyauth787438238 读取 DWARF 数据

我还观察到'step'命令可以正确执行,但是当我执行上面的下一个命令时会抛出错误。

我的 GDB 版本是 GNU gdb (GDB) Red Hat Enterprise Linux(7.2-60.el6_4.1 和 g++ 版本是 4.8.1。 非常感谢您对此提供任何帮助。

【问题讨论】:

    标签: debugging gdb g++ redhat


    【解决方案1】:

    默认情况下,gcc 4.8.1 发出 DWARF4 调试信息。您必须至少使用 GDB 7.5 才能阅读它。因此,对于具有默认选项的 gcc 4.8.1,您的 gdb 太旧了。 您可以:

    • 将 gdb 升级到更新的版本
    • 使用-gdwarf-2 gcc 密钥发出旧的 DWARF 调试信息格式

    来自GCC 4.8 Release Notes

    DWARF4 现在是生成 DWARF 调试信息时的默认设置。 在使用 DWARF 调试信息的平台上使用 -g 时, GCC 现在将默认为 -gdwarf-4 -fno-debug-types-section。 GDB 7.5, Valgrind 3.8.0 和 elfutils 0.154 调试信息消费者支持 默认为 DWARF4。在 GCC 4.8 之前,使用的默认版本是 DWARF2。 要使 GCC 4.8 生成较旧的 DWARF 版本,请使用 -g 和 -gdwarf-2 或 -gdwarf-3。 Darwin 和 VxWorks 的默认值仍然是 -gdwarf-2 -gstrict-dwarf。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-22
      • 2014-04-27
      • 1970-01-01
      • 2021-01-22
      • 2014-05-15
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      相关资源
      最近更新 更多