Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 Visual studio 2008疯狂调试器跳过_Visual Studio 2008_Debugging - Fatal编程技术网

Visual studio 2008 Visual studio 2008疯狂调试器跳过

Visual studio 2008 Visual studio 2008疯狂调试器跳过,visual-studio-2008,debugging,Visual Studio 2008,Debugging,我正在开发我的C#3.5 ASP.NET MVC web应用程序,就像我每天做的一样。没有做任何聪明的事情,只是调用其他方法的类上的标准方法 我构建了我的项目,在Chrome中启动了一个URL,并得到了我期望的响应。我将调试器附加到w3wp.exe,在Chrome中设置断点和f5。正如我所期望的那样,调试器在断点处停止 我点击f11单步遍历代码,它将移动到下一行/部分行,执行几次,它将随机跳到执行路径中的任意行 它跳转到的行是一个本应该执行的行,它不会跳转到任何旧的行,它只是决定忽略中间的一整串

我正在开发我的C#3.5 ASP.NET MVC web应用程序,就像我每天做的一样。没有做任何聪明的事情,只是调用其他方法的类上的标准方法

我构建了我的项目,在Chrome中启动了一个URL,并得到了我期望的响应。我将调试器附加到
w3wp.exe
,在Chrome中设置断点和f5。正如我所期望的那样,调试器在断点处停止

我点击f11单步遍历代码,它将移动到下一行/部分行,执行几次,它将随机跳到执行路径中的任意行

它跳转到的行是一个本应该执行的行,它不会跳转到任何旧的行,它只是决定忽略中间的一整串行

我以前从未见过这种情况,如何调试正在发生的事情

有一段时间我认为Chrome可能发出了两个请求,而调试器并没有真正跳过,它只是在请求线程之间交换,使它看起来像是在跳跃,但事实并非如此!如果我在每一行上设置断点,我可以部分阻止它,但采取以下措施:

1. public string Method()
2. {
3.     string s;
4.     s = OtherMethod();
5.     return s;
6. 
7. }
我看到的行为类型(上面每一行都有一个断点)是1,2,3,4,5,6,7(即它不会进入
OtherMethod()


我看到的另一个行为是1,2,3,然后就是它,返回到调用Method()的地方,或者更远的地方。

听起来像是在尝试逐步通过一个经过优化的二进制文件。优化器可以做很多使调试变得困难的事情,包括但不限于:

  • 重新排序语句
  • 内联函数

    • 不确定这是否有帮助。我以前遇到过相关程序集中编译的代码与调试器认为的不匹配的问题。我解决问题的方法是首先关闭VS,然后重新启动并重新加载项目,然后对解决方案进行完整重建。然后从debug->release或release->debug更改构建模式,并执行最后一次重建。老实说,我从来都不知道是什么原因造成的。只有偶尔才会发生。

      您尝试过清洗溶液吗?
      -(项目文件夹中的bin和obj文件夹)

      是否从临时asp.net文件文件夹中删除文件

      • (通常为C:\windows\Microsoft.NET\Framework\v2.0.50727\ASP.NET临时文件)
      • 您可能需要首先在命令提示符下运行“iisreset/stop”,然后使用iisreset/start重新启用

      我在2.0中看到过类似的情况,当时我无法确保浏览器缓存已清除。

      打开反汇编,看看您的单步执行是否更有意义。如果您确定自己没有在线程之间跳转,那么编译器可能已经决定您的一些代码不够重要,不需要单步执行(即,不执行任何操作)

      嘿,到现在为止,你可能已经找到了解决这个问题的方法,但是很多人(我就是其中之一)仍然在努力解决这个问题。这是VS 2008问题,应应用此修复程序:


      做了所有这些,杰夫的建议似乎解决了问题,谢谢做了所有这些,Atom的建议似乎解决了问题,谢谢