Visual Studio 在断点处冻结

2024-04-03

自一周前以来,我在 VS2010 中看到了一个非常烦人的行为: 当我正在调试一个项目时,调试器在断点处停止,Windows 冻结了近十秒。我说“Windows死机”是因为这段时间鼠标和键盘没用。

该问题仅在我调试特定项目时发生,并且我在两台不同的机器上尝试过,但结果相同。该项目是 WPF,我确实在某个点上挂接了键盘(虽然不是鼠标),但该代码已经几个月没有被触及,而问题才出现了一周。

就在这一切开始出现之前,我确实安装了 Telerik 的大套件(试用版),所以我的第一个怀疑是 Telerik 的 VS 集成是罪魁祸首。我卸载了所有 Telerik VS 集成(“JustXXX”产品),但问题仍然存在。

我将非常感谢任何能够就这里可能发生的事情提供暗示的人。

Thanks

EDIT 1:我现在尝试构建一个新的解决方案,将所有项目都移入其中,但问题仍然存在。

然后我卸载了所有 Telerik,只是为了确保这一点,但这也没有效果。

下一个测试是在不同的机器上加载完全相同的解决方案,这确实有帮助。除了 reSHArper 6.1 之外,该机器没有与 VS2010 的第 3 方集成。

我还对这个问题进行了更多分析,典型的情况是,前几次遇到断点时,UI 会冻结大约十秒。鼠标/键盘停止响应,但光标在代码编辑器中不断闪烁。接下来的几个断点执行相同的操作,并且通常从一行单步执行到另一行会导致很长的延迟(尽管没有 UI 冻结)。

另外,如果在我的应用程序启动代码中很早就设置了第一个断点,我可能不会遇到该问题。但是,当我继续单步调试代码时,随着应用程序初始化自身(在单独的线程中),调试器变得更加缓慢。

正如我之前所说,这种情况发生在单个应用程序中,因此代码显然以某种方式相关。

有谁对调试器如何操作有深入的了解吗?除了设置断点或用户从一行走到另一行(刷新堆栈跟踪和监视窗口)所需的明显步骤之外,后台发生的事情可能会冻结所有内容,这怎么可能?

我最后的希望是完全重新安装 VS2010,但我希望我能在需要该选项之前解决这个问题。


我终于找到了这种奇怪行为的原因。正如我在原来的帖子中提到的,我确实挂接了键盘(AND鼠标(我忘记了我这样做了)在应用程序初始化期间为了能够检测用户的不活动状态。

监视发生在后台线程中,该线程只是等待AutoResetEvent发现用户活动或不活动。由于某种奇怪的原因AutoResetEvent.WaitOne(...)以某种方式影响调试器。我当前的修复是避免在连接调试器时等待。

我仍然无法解释为什么现在会发生这种情况。经过一年的努力,问题的原因终于找到并解决了。

我已经向微软提交了我的问题,希望得到一个好的解释。如果我这样做,我会将其发布在这里。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Visual Studio 在断点处冻结 的相关文章

随机推荐