AND-assignment上的Visual Studio Debugger错误

时间:2013-07-12 18:48:39

标签: c# visual-studio-2010 .net-4.0

我遇到了Visual Studio 2010调试器中的错误。我有一段简单的代码,其中初始化为bool的{​​{1}}变量为AND-assigned,其表达式的计算结果为true。它的最终结果显然应该是false,但调试器有时会将其显示为false

true

b remains true

问题不会持续发生;例如,如果我将static void Main(string[] args) { int x = 20; int y = 0; int z = 8; bool b = true; b &= x == y || x >= z && y >= z; } 变量替换为AND分配中的实际值,int会正确显示为b。如果我稍后引用变量(例如false)。

,则问题也不会显现

据我所知,上面的整个代码片段都符合编译器消除死代码的条件,但是我认为在调试模式下编译并运行调试器时不允许这样的自由吗?

我正在使用带有SP1的Visual Studio 2010 Professional,目标是.NET Framework 4.0(虽然我安装了4.5),在“任何CPU”(使用64位平台)的调试模式下构建。

1 个答案:

答案 0 :(得分:1)

Microsoft Bug#655793:使用Visual Studio 2010调试器调试x64代码时错误报告变量值

似乎相关:http://connect.microsoft.com/VisualStudio/feedback/details/655793/

错误的解决方法似乎也适用于此问题:

bool b = true;
b &= x == y || x >= z && y >= z;
// ...
bool c = b; // adding intermediate initialization of c fixes b as well.  

一个问题是VS 2012中是否存在此问题,因为错误#655793标记为已修复。