当前位置: 首页 > 编程语言 > C#

如何在VisualStudio2008中声明怪异分享

时间:2023-04-10 14:39:22 C#

如果在VisualStudio2008中声明怪异我遇到了一个很奇怪的问题,我记录了我的会话,因为我认为没有人会相信我。我遇到了一个似乎处于非常基本级别的错误。这是一个单线程应用程序,我所做的只是评估一个布尔值。布尔值等于false,但if语句正在执行,就好像它是true...有点。你会明白我的意思。我已经清理了解决方案并重建了很多次。不确定发生了什么。我想要一些解释。http://www.youtube.com/watch?v=ope9kxEyt4g我过去曾多次看到这种情况。基本上发生的事情是您正在调试的代码与您看到的代码不匹配。我不知道是什么原因造成的,解决方案遵循cargocult指南。我的猜测是部署时发生了一些奇怪的事情,所以pdb与实际代码不同步。如果您使用日志记录而不是调试器来弄清楚发生了什么,我怀疑您会看到更明智的行为。我怀疑是CLR本身对“if”的行为异常——更有可能是调试器/运行时不一致。很久以前我在Delphi中看到过类似的东西,所以我的问题是:你是编译Release还是Debug,有或没有优化?我问的原因是在调试期间,我发现一个由4-5行代码组成的小程序,根据调试器的说法,它似乎是反向执行的。基本上,使用以下类型的代码:procedureTest;开始第1行;2号线;3号线;第4行;结尾;根据调试器,执行顺序是这样的:procedureTest;开始开始-+Line1;|+->这里-+Line2;|+->这里-+|3号线;|+->这里-+|第4行;+->这里-+|结尾;+->end因为这些行之间没有副作用,所以编译器通过重写代码来“优化”代码,实际上重新排列代码似乎恰恰相反。那么,您是否有一个较低的throw语句,它实际上是执行的语句,但编译器将其显示为您遇到问题的语句,因为由于重新排列代码,这两个throw语句实际上只发出一次尽可能执行文件代码?注意:我没有任何理由知道这是VisualStudio正在做的事情,但这是我看到您的视频时的想法。我认为这看起来像是调试步进范围刚刚关闭的情况。您不能总是相信调试器中的黄色突出显示。你实际上并没有踩到它。在早期的F#Betas中,我们有很多这样的错误,黄色高亮会疯狂地跳来跳去。调试器突出显示主要包括编译器写入.pdb文件的任何内容,作为与特定编译指令集相对应的“源代码范围”。这是什么版本的VS/C#?编辑看过其他人的答案后,确实可能的原因是您的.pdb文件与您的.dll不同步。一周前我遇到了完全相同的问题。还有VS2008,最新的SP。WinForms应用程序。值为false,但是如果一直执行body。我在视频中做同样的调查。这是我的一段代码:if(CurrentFileFormatVersion>int.Parse(metaInfo.SimulationFileVersion))thrownewSimulationFormatException(ws,ss);在没有调试的情况下编译为“发布”运行良好。尝试一下。我猜想VS2008调试器中有一个错误。不知何故,它可以使用“if”和“throw”关键字重现。编辑:上面的“执行”一词当然是错误的。必须使用“介入但未执行”。在此处添加“我也是”时髦的突出显示代码。我正在用C#运行VS2008。我有一个Windows窗体项目引用另一个项目中的类库,我正在逐行调试。“在某些时候”调试中的黄色突出显示距离正在执行的实际行有14到20行。我关闭了VS,打开了两个项目的目录,删除了目录bin/Debug和obj/Debug中的所有内容,然后重新启动了VS。重新编译和单步调试调试器时一切正常。我不知道问题出在.manifest、.pdb还是.cache文件中。没关系。把你吹走,一切都会好起来的。FWIW,谷歌搜索几乎没有用,除了它返回这个SO线程。所有其他点击都是关于VC++模板和VS2005的问题,SP修复了这个问题。这不是同一个问题。以上就是C#学习教程:如果声明了VisualStudio2008中奇葩分享的全部内容,如果对大家有用,需要详细了解C#学习教程,希望大家多多关注.本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: