在gdb中<值优化>是一个问题吗?

bba*_*zso 9 c++ gcc gdb

我有一个只在-O2优化中崩溃的应用程序(使用gcc 4.2.4编译).当我单步执行代码并到达崩溃并尝试检查值的位置时,我在gdb中得到"值优化".

我在网上看到这意味着该值存储在寄存器中.我想知道我的崩溃是否与某些信息放在寄存器中这一事实有关?有没有办法打印寄存器中的内容以查看它是否已损坏?有没有办法保持优化但不使用寄存器?

谢谢!

Pau*_*l R 11

它有99%可能是您的代码中的错误,1%可能是编译器代码生成错误.因此,花费相当多的时间在代码中查找潜在的错误,但要注意您可能已经发现了代码生成错误(在这种情况下,您需要仔细研究编译器生成的代码以查看问题所在).

  • 更像是99.9%和0.1%.优化器具有惊人的能力,即使它通常正常运行,也可以打破巧妙的错误代码. (7认同)

Ste*_*ini 5

尝试info registers在gdb中.

您可以使用-O0禁用优化,但有一些可疑的东西,我建议您进一步调查并最终发布代码.