错误的断点被击中

时间:2014-11-23 09:25:54

标签: c++ debugging visual-studio-2013 console-application breakpoints

很抱歉,如果这个问题已经得到解答,但我没有找到任何相关内容。当调试器错误地命中断点时,我在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的相关信息截图 enter image description here

1 个答案:

答案 0 :(得分:4)

实际上这段代码没问题,应该按预期工作。 VS允许您在执行块的末尾放置一个断点(在这种情况下,if循环中的for语句。)

enter image description here

由于没有用大括号包装if语句(如上图所示),VS假定您在b++语句中放置的断点是指{{1}的结尾执行块因此中断,而不执行for语句。