很抱歉,如果这个问题已经得到解答,但我没有找到任何相关内容。当调试器错误地命中断点时,我在 Visual Studio 2013 C++ Win32 应用程序中遇到一个奇怪的问题。这是示例代码:
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
int a = 3;
int b = 1;
for (int i = 3; i >= 1; i--)
if (i % 2)
a = a*a;
b++;
return b;
}
我在 b++
行设置断点。我熟悉调试 C# 代码时的调试和断点(并且是 C++ 的初学者),并且根据我的经验,仅当 for 循环结束时才应命中 b++
行上的断点。然而,每次循环迭代都会命中,但代码(增量)不会执行。
这是VS的截图以及相关信息
最佳答案
实际上这段代码没问题,应该能按您的预期工作。
VS 允许您在执行 block 的末尾放置一个断点(在本例中为 for
循环内的 if
语句)。
由于您没有用大括号包裹 if
语句(如上图所示),VS 假定您在 b++
语句中放置的断点引用for
执行 block 结束,因此中断,而不执行 b++
语句。
关于c++ - 命中断点错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27087415/