Visual Studio 2008 疯狂调试器跳过

7
我正在开发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()的地方或者更远的地方。

6个回答

6

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

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

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

做了这些以及Atom的建议似乎已经解决了问题,谢谢。 - Andrew Bullock

3

2

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


完成所有这些操作和Jeff的建议似乎已经解决了问题,谢谢。 - Andrew Bullock

0

听起来你正在尝试调试一个被优化过的二进制文件。优化器可以做很多让调试变得困难的事情,包括但不限于:

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

0

当我没有确保浏览器缓存清除时,我在2.0中看到了类似的情况。


0

打开反汇编功能,看看你的步进是否更有意义。如果你确定没有在不同线程之间跳转,那么编译器可能已经决定你的某些代码不重要,不需要进行步进(即无操作)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接