Visual Studio Debugger - 它只是我还是这个调试器本身充满了bug?

Dun*_*ill 1 c# visual-web-developer visual-studio visual-studio-debugging

我开始对Visual Web Developer Express Debugging感到非常沮丧.

编辑 - 这主要是关于调试C#

通常我会设置两到三个断点.会发生什么是光标最终在循环中转移.我将浏览所有断点,但不是退出调试并在浏览器中向我显示网页的结果,光标会跳回到开头.

或者我将在我的断点中途,光标将跳回到上一个断点并且陷入循环,再次总是跳回到前一个断点.

似乎调试器不一致,有时候它会工作正常,有时它会如上所述.

有时候,当发生这种情况时,我会在边缘有一个带有蓝色小点的黄色箭头.当我将鼠标悬停在它上面时说"自上一步以来进程或线程发生了变化"这是什么一回事?

此外,我正在进行异常处理.我在C#中有一个带out参数的方法.当光标到达此方法时,有时它会给我一个空引用异常.但它是一个out允许为空的参数.VWD似乎也不一致.有时候我会遇到这个问题,大部分时间我都没有.

我做错了还是VWD Debugger松了很多螺丝?

请帮帮我因为我开始用心了!

Eri*_*ert 15

我怀疑你有很多线程在同一个代码中同时运行.当您断开断点时,该断点将应用于所有线程,而不仅仅是您创建时所运行的线程.如果你点击"go"并且另一个线程开始运行,并且它首先命中断点,那就是你正在调试的线程.这可能非常令人困惑.

当我处于那种情况下时我会做什么 - 我每天都在这种情况下,相信我 - 我养成了总是冻结每个线程的习惯,但我实际上想要调试的那个线程.这样,当我调试程序时,程序实际上是单线程的.别忘了解冻它们!


Ken*_*nky 5

这很可能是您或您的代码所特有的.

在过去的18个月里,我经常使用Visual Studio 2010的调试器.在此之前,我一直使用Visual Studio的C#调试器一直回到原始的Visual Studio .Net版本.我从来没有发现任何重大错误.大多数时候我以为我发现了一个错误,实际上我的理解或代码存在缺陷.

花点时间了解发生了什么,图标和指标的含义,以及如何操作调试器,您很可能会发现:

  1. VWD工作正常.
  2. 你的代码不是.
  3. 更好地理解编程.

作为一个心灵的习惯,我鼓励你研究"选择不破".

以下是让我觉得缺乏理解的具体内容:

  1. 你说"当光标到达这个方法调用时......"这是用于描述情况的错误措辞.当光标进入或超过方法调用时,将调用该方法.如果光标仅在方法调用上,则该方法尚未执行.
  2. 你怎么知道out参数给你带来麻烦?如果要在对象上调用该方法,那么对该对象的引用可能为null?
  3. 不一致的调试器行为实际上可以是(通过调试器)一致报告不一致的程序代码.
  4. 您在第二和第三段中的措辞和描述是不精确的,对没有看到您的特定调试设置的任何人都没有帮助.

简而言之,是的,你确实觉得你在失去理智.我同情.这种感觉永远不会消失,但这种不适意味着你的大脑变得越来越大.继续尝试,但是您应该了解有关调试器如何工作的更多信息.花更多时间单步执行正常工作的代码.

编辑:您没有提到如何单步执行代码.只有断点被击中(按照你不同意的顺序).了解VWD中的步入,步进,步出和运行到光标命令.因为您将其作为网站的一部分运行,所以这些可能还不够.您可能在没有意识到的情况下同时处理请求.当断点被击中时,这将导致执行在看似随机的序列中在线程之间交替.确保您一次只提供一个请求,或至少注意您的线程ID.