当我的程序到达断点时,Visual Studio将在下面的堆栈调用中报告错误的行 (延迟1个陈述)
并非总能发生,但确实会在大多数地方发生 具有此问题的代码位置始终存在问题。
Vector3::setValue()
中有一个断点
当我在第25行打电话给setTransform()
时,会间接触发它: -
//inside "doThat()"
if(someValue){
auto physicObject=getObject();
if(somefunction()){
someFunction()
}else{
physicObject->setTransform(transform); //line 25 It should pause here. #A
}
}else{ //line 28 <----- VS reports that it pauses here #C
printSomeThing()
}
堆栈跟踪将显示为: -
Vector3::setValue()
Transformation::operator=()
PhysicObject::setTransform()
System::doThat() (line 28) #C
...
如果我点击#C
,Visual Studio将突出显示#C
,因此我无法调查physicObject
的值,因为physicObject
现在已超出范围。
我的解决方法
如果我真的想要观看physicObject
,我必须添加虚拟行#B
: -
}else{
physicObject->setTransform(transform); //line 25 #A
int dummy=42; //line 26 #B
}
堆栈将报告: -
System::doThat() (line 26) #B
我将能够观看physicObject
。
如何使Visual Studio报表堆栈处于正确的行?
有类似的问题,但我找不到任何与此问题完全匹配的问题 (我定期搜索了几个月。)
请注意,我总是关闭优化=关闭,并且我在调试模式下运行 Rebuild-all也无济于事。