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

时间:2015-04-24 05:31:05

标签: debugging gdb g++ redhat

我正在尝试使用GDB调试C ++代码。我可以运行调试器,设置断点,也可以正确命中断点。但是当我在遇到断点时尝试执行'next'命令时,会抛出以下错误:

矮人错误:无法从'/ tmp / spyauth787438238 中读取DWARF数据”

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

我的GDB版本是GNU gdb(GDB)红帽企业Linux(7.2-60.el6_4.1和g ++版本是4.8.1。 非常感谢任何有关此问题的帮助。

1 个答案:

答案 0 :(得分:3)

默认情况下,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。