很抱歉,如果这个问题已经得到解答,但我没有找到任何相关内容。当调试器错误地命中断点时,我在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的相关信息截图
答案 0 :(得分:4)
实际上这段代码没问题,应该按预期工作。
VS允许您在执行块的末尾放置一个断点(在这种情况下,if
循环中的for
语句。)
由于没有用大括号包装if
语句(如上图所示),VS假定您在b++
语句中放置的断点是指{{1}的结尾执行块因此中断,而不执行for
语句。