我目前正在努力调试以下代码部分。我在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正确增加但调试器信息与此相矛盾。
答案 0 :(得分:4)
确保已关闭优化功能。优化实际上很难调试,因为值将保存在寄存器中,直到需要时才会存储。代码流可能非常不直观。