【问题标题】:Visual studio 2008 crazy debugger skippingVisual Studio 2008 疯狂的调试器跳过
【发布时间】:2010-12-03 02:41:45
【问题描述】:

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

【问题讨论】:

    标签: visual-studio-2008 debugging


    【解决方案1】:

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

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

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

    【讨论】:

    • 做这一切,Atom 的建议似乎已经解决了这个问题,谢谢
    【解决方案2】:

    嘿,您现在可能已经找到了解决此问题的方法,但很多人(我也是其中之一)仍然在为此苦苦挣扎。这是 VS 2008 的问题,应该应用此修复:

    http://support.microsoft.com/?scid=kb%3Ben-us%3B957912&x=9&y=14

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 做这一切,杰夫的建议似乎已经解决了,谢谢
      【解决方案4】:

      听起来您正在尝试单步执行已优化的二进制文件。优化器可以做很多难以调试的事情,包括但不限于:

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

      【讨论】:

        【解决方案5】:

        当我不确定我的浏览器缓存是否清除时,我在 2.0 中看到过类似的情况。

        【讨论】:

          【解决方案6】:

          打开反汇编,看看你的步进是否更有意义。如果您确定您没有在线程之间跳转,那么编译器可能已经确定您的某些代码不够重要,无法执行(即,什么都不做)。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多