VS 2010忽略了断点

本文关键字:断点 2010 VS | 更新日期: 2023-09-27 18:05:38

我在Visual Studio中有一些断点,在调试模式下调试时,它们被忽略了。

仅在不使用变量时发生。如

 string s = "10;
 string t = "Hi";
 return s;

在上面的例子中,如果我在string t上设置了断点,它将不会停止。它也不会在调试窗口中显示't'。如果我设置了一个手表,手表窗口中的信息是

名称't'在当前上下文中不存在

我要做的是绕过

 string s = "10;
 string t = "Hi";
 string z = t; //pointless but the compiler now let's me focus on it
 return s;

请注意,整个程序中的所有变量都会发生这种情况。

我自己的研究表明这是JIT做的;它正在为我优化代码,并在可以的地方删除任何开销,但我认为它只会在发布模式下这样做?我这样做的目的是为了在重构代码时比较新值和旧值。

我的问题是,我可以关闭这个编译器优化吗?

Visual studio 2010调试器don't stop at Breakpoint?不帮助。

所有的项目都是。net 4.0(我知道不同的。net版本会混淆编译器)
在解决方案配置中,我选择了调试
在属性窗口中-> Debug也被设置为Debug
在"属性"窗口->"构建"中,选中"优化代码"

VS 2010忽略了断点

我猜您在该变量中存储了一些与调试器相关的日志。你可以使用volatile关键字,它基本上是在对编译器说"你不要优化我!"

volatile string t = "Hi";  // t won't be optimised.

关键字声明内存中的特定区域可以由其他方(例如另一个异步代码)设置,因此编译器不会优化它。

答案是感谢@MikeCheel谁建议我删除pdb文件。就在那时,我注意到我的调试文件夹是空的,但我的发布文件夹充满了文件。显然,问题出在我的配置设置上。

我很快就找到了,现在我知道要找什么了:

因此,我右键点击解决方案->属性

在配置属性下,我的项目被设置为Debug下的Release。

这修复了它,可悲的是,我的代码现在断言每一个地方,所以至少我知道它的工作!