在断点处暂停时(在堆栈处)Visual Studio报告错误的行

时间:2017-03-15 07:27:51

标签: c++ visual-studio-2015 breakpoints visual-studio-debugging

当我的程序到达断点时,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也无济于事。

0 个答案:

没有答案