我正在尝试使用GDB调试C ++代码。我可以运行调试器,设置断点,也可以正确命中断点。但是当我在遇到断点时尝试执行'next'命令时,会抛出以下错误:
“矮人错误:无法从'/ tmp / spyauth787438238 中读取DWARF数据”
此外,我观察到'step'命令可以正确执行,但是当我执行下一个命令时,会抛出错误。
我的GDB版本是GNU gdb(GDB)红帽企业Linux(7.2-60.el6_4.1和g ++版本是4.8.1。 非常感谢任何有关此问题的帮助。
答案 0 :(得分:3)
默认情况下,gcc 4.8.1会发出DWARF4调试信息。您必须至少使用GDB 7.5才能读取它。因此,对于具有默认选项的gcc 4.8.1,您的gdb太旧了。 你可以:
-gdwarf-2
gcc键发出旧的DWARF调试信息格式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。