在发布中进行调试时,c ++代码不会扩展某些变量。什么类型的变量无法扩展,为什么会这样?我可以理解发行版dll已经打包了额外的优化,但不太确定这是否是唯一的原因。还有什么可以做的来查看这些值
答案 0 :(得分:2)
即使假设您在构建中有调试信息,一般来说调试版本构建(优化)也很困难。优化器可以将代码的结果破坏到您可能无法识别的点。
它将完全删除变量并从调试器隐藏(因为变量不存在,调试器无法显示它们)。它可能不会删除它,但暂时重用空间进行寄存器溢出,您将看到变量跳转到某个随机值的内存值。流可能会被重新排序,变量可能会在初始化时具有正确的值,但初始化可能已被进一步推下并且尚未执行...
如果您可以在调试版本中重现该问题,我将从那里开始。如果没有,祝你好运。不要相信你看到的任何东西,但要尝试从你可用的数据点中提取尽可能多的信息。
答案 1 :(得分:1)
当你内置" Debug"模式,然后编译器(和链接器)添加有关变量,它们的名称,使用的源文件,行号信息等内容的额外信息。在"发布"模式。通过在项目设置中更改它,可以添加 。