我正面临一些只出现在某些笔记本上的奇怪行为。 我正在使用 msvc 2012 和 qt 框架在 c++ 中进行开发。
我会尝试总结问题,我希望有人知道问题可能是什么或者我可以尝试找出什么......
一般是以下问题:
void myclass::foo()
{
const double value1 = 100.0;
double value2;
value2 = some_function_returning_double();
if(value1 > value2)
{
//__ do something
}
}
问题是当局部变量被覆盖时条件失败。 如果我做一些调试输出,我可以看到变量 value1 不再是 100.0 而是一些随机值..所以比较随机失败..
我想到的一件事是,如果我不使用局部变量,一切都会正常工作。如果我将 value1 和 value2 设置为我的类的成员变量,一切正常,但这不是解决方案。
现在奇怪的是,这个错误只发生在一些笔记本上(一些移动 i5 cpu)。 在我的机器 (i5) 和许多其他笔记本电脑(甚至其他移动 i5)上一切正常。
我知道您无法用我在这里提供的这些小信息解决我的问题,但也许你们中的一些人有任何暗示可能是什么问题以及我可以尝试解决这个问题的方法。
非常感谢。
最佳答案
在visual studio 2012中,在被覆盖的变量地址处添加数据断点(debug->new breakpoint->new data breakpoint)。
首先,在函数开始处中断。
然后设置数据断点:只需在“新建断点”输入框中键入&value1
即可。
然后它应该在值被修改后立即中断,您应该看到罪魁祸首。
数据断点是一个非常强大的工具,它可以帮助我快速找到讨厌的错误。
关于c++局部变量被覆盖(但仅在某些笔记本上),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30664720/