C ++ VS Debugger转移行为?

时间:2016-12-30 19:50:16

标签: c++ visual-studio debugging for-loop

我目前正在努力调试以下代码部分。我在Windows 10上使用VS2015社区版。

[(BR)]是一个断点

以下是我的代码的(精简版)版本。我基本上嵌套了for循环,从所有游戏对象中提取所有点(X& Y坐标)。

如您所见,我设置了两个断点。

我点击了调试按钮,它在第一个断点处停止 - 成功。重要的局部变量counterVertices为零。太好了。

然后我点击继续。这是三个相同的断点。

然后我到达第二个断点。 counterVertices显示为零。为什么呢?

int counterVertices = 0;
    int counterIndices = 0;
    int beginningOfPolygon = 0;
    //GetData
    for (auto& it : this->gameObjects) { //Iterate over all gameObjects
        beginningOfPolygon = counterIndices;
        for (int i = 0; i < it->getOutline().getNumber(); i++) { //Iterate over all points of the gameObject
            [(BR)]this->vertices[counterVertices] = it->getRenderPoint(i).x;
            counterVertices++;
            this->vertices[counterVertices] = it->getRenderPoint(i).y;
            counterVertices++;
            [(BR)]if (this->vertices[counterVertices-2] == this->vertices[counterVertices-1] && this->vertices[counterVertices-1] == 0.0f) {
                cout << "A point on 0/0." << endl;
            }
            this->vertices[counterVertices] = 0.0f;
            counterVertices++;
            //Add Line to draw
            this->indices[counterIndices * 2] = counterIndices;
            this->indices[(counterIndices * 2) + 1] = counterIndices + 1;
            counterIndices++;
        }
        this->indices[(counterIndices * 2) - 1] = beginningOfPolygon; 

    }

我完全迷失了,因为这不是我想要解决的问题,而是试图解决我原来的问题。

非常感谢你的时间

PS:我有整个事情的截图,这个过程是可以恢复的。我可以清理并重建解决方案,重新启动并执行后空翻。调试行为不会改变。

PPS:程序的行为/工作方式表明counterVertices正确增加但调试器信息与此相矛盾。

1 个答案:

答案 0 :(得分:4)

确保已关闭优化功能。优化实际上很难调试,因为值将保存在寄存器中,直到需要时才会存储。代码流可能非常不直观。