【问题标题】:Visual Studio 2012 times out randomly during debugging?Visual Studio 2012 在调试期间随机超时?
【发布时间】:2012-10-18 15:38:46
【问题描述】:

我有一个 Visual Studio 2012 项目,我用它进行了大量调试。每隔一段时间(每天多次),我将进行调试,Visual Studio 会随机阻塞 5-10 秒。之后,我无法评估任何变量的值(通过它会说function evaluation timed out 的变量)并且单步执行将不起作用。我唯一能做的就是重新开始调试。

不过,这是一个非常随机的问题。有时它会在我调试了长达 15 分钟的会话时发生……有时它会发生在我遇到的第一个断点上。在大多数情况下,Visual Studio 2012 都能正常工作……只是时不时地我会遇到这个奇怪的问题。我不知道如何重现它。它不只与一种类型的对象相关联,甚至也不与一个项目相关联。另外,我可以在VS2010中打开同一个项目,我从来没有遇到过这种问题

这个问题在其他地方见过吗?有谁知道我可以做任何额外的配置来避免这种烦恼的发生?

【问题讨论】:

  • 这是一个完全正常的事故。例如,在 COM 接口中非常常见。监视表达式在单独的工作线程上进行评估,因此死锁总是会导致监视超时。鉴于尚未有人将 VS2012 标记为存在此问题,您确实需要尝试找到更好的诊断方法。

标签: .net visual-studio debugging visual-studio-2012 visual-studio-debugging


【解决方案1】:

自从 2005 年以来的每个 Visual Studio 版本(仍然使用 VS 2013 Update 3)以来,这个错误都让我发疯了!在我的情况下,发生超时后,进程将无法正确继续(当前执行的线程死亡),当你想分离 VS 时,它只允许你在终止进程时这样做。

我没有真正解决这个问题,但多年来我发现了以下可能对您有所帮助的方法:

  • 大型复杂程序更容易出现此错误。
  • 多线程更容易发生。
  • 单步执行代码越多,发生这种情况的可能性就越大。在某处放置一个断点并按 F5 跳转到那里比一直走到那个位置要好。
  • 当它发生时,不要试图在代码中进一步,它会随机跳转到任何地方,然后在下一步,线程死掉。就我而言,大多数情况下只有重新启动程序会有所帮助。
  • 尝试删除/禁用断点。您拥有的活动断点越多,风险就越高。条件断点尤其“危险”。
  • 尽可能关闭所有带有监视变量的窗口(Autos、Locals、Watch 窗口)。
  • 当您需要一个监视窗口时,从中删除所有不需要的变量。评估的变量越多,挂起的风险就越高。
  • 取消选中工具 -> 选项 -> 调试 -> 常规 -> 启用属性评估...这是防止此错误的最有效方法。但是,它使调试器对我来说相当不可用,所以我不想使用它。
  • [仅适用于 VS 2013:] 尝试启用 工具 -> 选项 -> 调试 -> 常规 -> 使用托管兼容模式。这将使我阅读的 VS 2012 中的调试行为可能更加健壮,至少在问题在 VS 2013 中得到解决之前是这样。

【讨论】:

    猜你喜欢
    • 2013-07-21
    • 2017-10-03
    • 1970-01-01
    • 2013-06-17
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多