【发布时间】:2010-03-03 15:55:58
【问题描述】:
在 Visual Studio 2008 中,调试大约 1-2 分钟后,当我按 F10(Step Over)时,调试器挂起,Visual Studio 冻结 5-10 秒,然后转到下一行。然后无论我做什么(F10、F5、F11 等),调试器都会继续执行,就好像我按下了 F5 并且我正在调试的所有表单都关闭了一样。我总是必须重新启动应用程序。
重现非常困难,而且每次我想调试某些东西时都不会发生。有人有解决办法吗?
编辑:我设法用以下代码重现了我的问题:
static void Main(string[] args)
{
XElement e = new XElement("root");
Test(e, 0);
}
static void Test(XElement parentElement, int i)
{
if (i < 1000)
{
XElement element = new XElement("element");
parentElement.Add(element);
Test(element, ++i);
}
}
你需要在"XElement element = new XElement("element");"这一行放置一个条件断点条件为“i == 999”。然后启动程序,等待 2-3 秒,然后在“parentElement.Add(element);”行放置正常断点。现在 VisualStudio 冻结,无法调试。在 WinForm 应用程序中,它会关闭按 F10 后打开的所有表单。
但我发现如果我在“工具->选项->调试”中禁用调试选项“在变量窗口中的对象上调用字符串转换函数”,我可以调试。它很慢,但至少 VisualStudio 不会冻结。有谁知道它为什么这样做?因为我不想禁用这个选项,没有它调试真的很烦。
我还注意到,如果我只在 main 方法的末尾放置一个断点,与在递归方法中设置条件断点相比,代码运行得非常快。
【问题讨论】:
-
你能在另一个系统上重新安装你的操作系统和 VS 并在那里尝试你的调试吗?我怀疑其他软件/配置/硬件,而不是直接的 VS 问题。
-
我不这么认为,因为它在我同事的电脑上也出现了同样的问题,而且他们中的一些人的操作系统不同
-
你有很多个断点吗?
标签: visual-studio visual-studio-2008 debugging