我开始对Visual Web Developer Express调试感到非常沮丧。
编辑 - 这主要是关于调试C#
通常我会设置两到三个断点。会发生什么是光标最终在循环中转移。我将浏览所有断点,但不是退出调试并在浏览器中向我显示网页的结果,光标会跳回到开头。
或者我将在中断点的一半,光标将跳回到上一个断点,然后卡在一个循环中,再次总是跳回到上一个断点。
似乎调试器不一致,有时它会正常工作,有时它会如上所述。
有时候,当发生这种情况时,我会在边缘有一个带有蓝色小点的黄色箭头。当我将鼠标悬停在它上面时说“自上一步以来该过程或线程发生了变化”这是什么意思?
此外,我正在进行异常处理。我在C#中有一个带out
参数的方法。当光标到达此方法时,有时它会给我一个空引用异常。但它是out
参数,允许它们为空。 VWD似乎也不一致。有时我会遇到这个问题,大部分时间我都没有。
我做错了还是VWD Debugger松动了很多螺丝?
请帮助我,因为我开始使用我的想法了!
答案 0 :(得分:15)
我怀疑你有很多线程在同一个代码中并发运行。 当您断开断点时,该断点适用于所有线程,而不仅仅是您创建时所运行的线程。如果你点击“go”并且另一个线程开始运行,并且它首先命中断点,那就是你正在调试的线程。这可能非常令人困惑。
当我在那种情况下我会做什么 - 我每天都在这种情况下,相信我 - 我养成了总是冻结每一个线程的习惯我其实想调试。这样,当我调试程序时,程序实际上是单线程的。别忘了解冻它们!
答案 1 :(得分:5)
这很可能是您或您的代码所特有的。
在过去的18个月里,我经常使用Visual Studio 2010的调试器。在此之前,我一直使用Visual Studio的C#调试器一直回到原始的Visual Studio .Net版本。我从来没有发现任何重大错误。大多数时候我以为我发现了一个错误,实际上我的理解或代码存在缺陷。
花时间了解正在发生的事情,图标和指标的含义以及如何操作调试器,您很可能会发现:
作为一种心灵习惯,我鼓励你研究“选择不破”。
以下是让我觉得你缺乏理解的具体事情:
简而言之,是的,你确实觉得自己正在失去理智。我同情。这种感觉永远不会消失,但这种不适意味着你的大脑变得越来越大。继续尝试,但是您应该了解有关调试器如何工作的更多信息。花更多时间逐步完成正常运行的代码。
编辑: 您没有提到如何单步执行代码。只有断点被击中(按照你不同意的顺序)。了解VWD中的步入,步进,步出和运行到光标命令。因为您将其作为网站的一部分运行,所以这些可能还不够。您可能在没有意识到的情况下同时处理请求。当断点被击中时,这将导致执行在看似随机的序列中在线程之间交替。确保您一次只提供一个请求,或至少注意您的线程ID。