VS 2010忽略了破发点

时间:2014-05-28 12:48:18

标签: c# visual-studio-2010

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

这仅在未使用变量时发生。 EG

 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 debugger don't stop at Breakpoint?无效。

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

答案是感谢@MikeCheel,他建议我删除了pdb文件。然后我注意到我的调试文件夹是空的,但我的发布文件夹里装满了文件。显然,问题必须是我的配置设置。

我现在很快发现了什么,我知道该找什么:

所以,我右键点击解决方案 - >特性

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

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