我刚遇到了令人难以置信的错误之一。 false == true您需要确认/调试此行为的信息是什么?我从来没有见过这样的东西。
编辑: 我做了一个干净的>重建,但仍然一样。
这是装配和寄存器。我不知道怎么读这个,但也许它可以帮助别人。
答案 0 :(得分:42)
我认为您的PDB文件不同步,并且您在实际执行的内容和Visual Studio看到的行号方面存在差异。尝试重建。我们都知道,true = false
或我们所知道的世界不可能改变: - )
答案 1 :(得分:11)
它是否真的抛出错误?如果你输入错误的pdb,调试器通常可以突出显示错误的行,所以这可能是一个错误的引导。使用“立即”窗格重现测试后更改值也是微不足道的。
如果result
是一个字段或一个捕获的变量,它也可以由外部代码设置(可能在另一个线程上)。
如果result
不是bool
,而是您自己的自定义类型,则可以覆盖==
,或提供自定义true
/ false
运算符
答案 2 :(得分:7)
源可能与正在运行的版本不对应,或者调试器中存在错误。
答案 3 :(得分:6)
部分问题在于您假设调试器100%正确。它实际上不是并且受到许多情况的影响,其中值可能具有不正确或误导性的显示。最常见的原因是......
但事实上它几乎肯定不是假的。验证这一点的最简单方法是使用Debug.WriteLine
调用将值输出到输出窗口。
答案 4 :(得分:4)
你确定抛出异常吗?我的预感是你的方法isContextSignatureValid实际上是抛出一个异常,但是Visual Studio调试器有时可以超越自身并突出显示一条实际上没有抛出异常的行。
答案 5 :(得分:3)
也许你在休息模式下无意中用鼠标移动了当前的指令指针(黄色箭头)......它发生在我身上,我翻了出来。 : - )
答案 6 :(得分:2)
只是添加一点建议:
如果您从调试器中得到令人困惑的结果,请在其中粘贴Console.WriteLine()并获取代码本身以告诉您发生了什么。这通常可以消除困惑。
(在调试发布代码时你也可以得到这样的效果,但你说这是一个调试版本,可以消除那个嫌疑人)
答案 7 :(得分:0)
我之前见过这种事。一位同事确信他发现了.Net Framework或CLR中的一个错误。最后,它只是一个旧的程序集或pdb同步问题。