move_=move; if(!Ve-6ren">
gpt4 book ai didi

c++ - 运行 "optimization=Enable"时停止 Visual Studio 移动我的断点

转载 作者:行者123 更新时间:2023-11-28 05:22:22 24 4
gpt4 key购买 nike

我在我的一个函数(#A 行)中添加了一个断点(代码行左侧的红色斜圆)。

public: B(const Vector3& move){
this->move_=move;
if(!Vector3::isValid(move)){
int asdf=0; //#A
}
basis_=Matrix3x3::identity(); //#B
}

如果它运行在 Debug模式,或未经优化的 Release模式,程序将正确地暂停在#A

如果它在优化后的 Release模式下运行,断点将移动到#B 自己!
因此,程序将在每次通过该函数时暂停。

我知道在优化时,#A 行会被优化掉。
结果,这条线永远不会通过。
我希望它永远不会在函数中暂停。

实际行为是:它总是在 #B 处暂停。
对我来说,这似乎是 Visual Studio 的一个错误。 (?)

问题

如何让程序在#B处不暂停?
换句话说,如何强制 Visual Studio 不自动移动断点?

最佳答案

断点下移是因为在 Release模式下编译时,编译器优化了该行代码(即 /O2)。因此编译器将尝试找到未优化的下一行代码并将断点移动到那里。我不知道是否有办法让断点在 Release模式下不向下移动,但是您可以通过将光标移动到红点上并单击切换按钮来暂时禁用断点。

由于打断点的那行代码在release模式下优化掉了,运行时其实没有打断的意思。

参见 How to: Enable or Disable Breakpoints

关于c++ - 运行 "optimization=Enable"时停止 Visual Studio 移动我的断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41206447/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com