c++ - 命中断点错误

标签 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

最佳答案

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

enter image description here

由于您没有用大括号包裹 if 语句(如上图所示),VS 假定您在 b++ 语句中放置的断点引用for 执行 block 结束,因此中断,而不执行 b++ 语句。

关于c++ - 命中断点错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27087415/

相关文章:

c++ - "Why switch statement cannot be applied on strings?"的答案是否仍然正确,即使使用 C++11/14?

c++ - 函数式编程在 C++1z 中每三分之一递增整数序列?

javascript - 如何禁用谷歌分析调试js?

c++ - eclipse 开普勒 : #include "boost/filesystem.hpp" breaking debugging?

c++ - Visual Studio 2013 - C++ 错误

c++ - 如何定义和测试字符串值的宏?

c# - 在 C# 中编码 unsigned char**

typescript - 如何使用 TypeScript 调试用 Expo 创建的 React Native 项目

c# - System.Data.SQlite 未显示在 Visual Studio 2013 的更改数据源中

razor - Resharper 8 减慢了 vs 2013 Razor 编辑器的速度