2009-10-01 189 views
7

这究竟是什么原因引起的......visual studio 2008疯狂调试器跳过!

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

我建我的项目,启动在Chrome浏览器的URL,并获得我期待的回应。我将调试器附加到w3wp.exe,在Chrome中设置断点和f5。调试器就像我期望的那样在断点处停止....

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

它跳到该行是将被执行的线,它不跳过任何旧线,它只是决定错过了一大堆线在??之间!

我从来没有见过这个,到底如何做我调试这是怎么回事???

有一段时间我想也许铬是使两个请求,和心不是真的跳过调试器,它只是请求的线程之间交换使它看起来像它一下蹦,但那不是吧!如果我在每一行设置断点我可以部分地防止,但采取以下:

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()或甚至更远的地方:s

谢谢

+0

调试/释放? ____ – EFraim 2009-10-01 19:04:39

+0

debug mode______ – 2009-10-01 19:05:53

回答

6

您是否尝试过清理你的解决方案?
- (项目文件夹中的bin和obj文件夹)

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

  • (通常为C:\ windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP。NET文件)
  • 你可能需要在命令提示符下运行“IISRESET /停止”,然后再与IISRESET重新启用/启动
+0

wheres那个位置? – 2009-10-01 19:17:12

+0

做这一切,Atom的建议似乎已经修复它,谢谢 – 2009-10-01 19:34:53

+0

标记为答案? – Sameer 2009-10-06 16:02:07

0

听起来就像你试图穿过一个已经优化的二进制文件。优化可以做很多事情,使人们很难调试,包括但不限于:

  • 重新排序报表
  • 内联函数
2

不知道这会有所帮助。在相关程序集中的编译代码与调试器认为的不匹配之前,我遇到了问题。我总是解决这个问题的方式是先关闭VS,然后重新启动并重新加载项目,然后重新完成解决方案。然后将构建模式从debug-> release或release-> debug更改,然后重新进行最后一次重建。我真的从来没有想过是什么原因造成的。只有偶尔发生。

+0

这样做和Jeff的建议似乎已经修好了,谢谢 – 2009-10-01 19:31:15

0

我见过类似的东西在2.0的时候,不确保我的浏览器缓存清除。

0

打开反汇编程序,看看你的脚步是否更有意义。如果你确定你没有在线程之间跳跃,那么编译器可能已经决定你的一些代码不够重要(即不做任何事情)。