我写了一个 if 子句来检查我是否应该中断程序进行调试:
if (a < 0) {
a = a;
}
a
不应该变成负数,但我发现它确实如此,我想中断调试,看看为什么如果发生这种情况它会变成负数,因此我写了这个 if 子句。在这一行上,a = a;
我设置了一个断点,如果程序进入 if 子句,它应该停止程序。问题是该行不做任何事情(这是为了不搞砸任何事情所必需的),因此该行被优化掉并且断点在 if 子句之后结束。这个技巧通常有效,但这次编译器显然没有找到它。
语言是 C++,我正在使用qmake
(Qt 工具)和mingw
.
我的问题是,当我在代码行上设置断点时,如何防止编译器优化掉代码行?还是有其他方法可以有条件地中断程序进行调试?