2010-03-03 127 views
7

在Visual Studio 2008中,在调试大约1-2分钟后,当我按下F10(跳过)时,调试器挂起,Visual Studio冻结5-10秒,然后转到下一行。然后,无论我做什么(F10,F5,F11等),调试器都会继续执行,就好像我按F5和我正在调试的所有窗体关闭一样。我总是不得不重新启动应用程序。Visual Studio调试器问题

这是很难重现,它不会发生每次我想调试的东西。有没有人有解决方案?

编辑:我已经成功地重现我的问题与下面的代码:

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元=新的XElement(”元“); “条件为“i == 999”。然后启动程序,等待2-3秒,并在“parentElement.Add(element);”行放置正常断点。现在VisualStudio冻结并且不可能调试。在WinForm应用程序中,它将关闭按F10后打开的所有表单。

但我发现,如果我在“工具 - >选项 - >调试”禁用调试选项“在变量窗口对象上调用字符串转换功能”,我可以调试。它很慢,但至少VisualStudio不会冻结。有谁知道它为什么这样做?因为我不想禁用这个选项,所以在没有它的情况下调试真的很烦人。

我也注意到,如果我只放一个断点的主要方法结束,代码运行非常快比较具有递归方法的条件断点。

+0

你可以在另一个系统上重新安装你的操作系统和VS,并尝试在那里进行调试吗?我怀疑其他软件/配置/硬件,而不是这是一个直接的VS问题。 – Lazarus 2010-03-03 16:05:55

+0

我不这么认为,因为它在我的同事的计算机上执行相同的问题,并且其中一些人有不同的操作系统 – 2010-03-03 16:33:26

+0

您是否有一个断点_lot_? – Max 2010-03-11 19:40:51

回答

0

不知道我曾经碰到这一点,但如果我是你,如果你还没有,请删除bin文件夹里,然后重建项目。然后运行干净的解决方案以确保安全。有时,你的PDB过时会发生时髦的事情 - 所以你需要清除它们。另外,如果您打电话给外部组件,请将它们移除并重新附加它们以确保您拥有最新的组件。

+0

不幸的是,这似乎没有帮助 – 2010-03-03 16:16:12

1

我发现,我得到这样的速度变慢时,我已经添加不存在于符号的目录列表远程UNC共享。

尝试将工具 - >选项 - >调试 - >符号,并确保所有在该列表中的目录的实际存在。

但是我不知道那会如何导致你的程序在该点之后继续。

4

尝试删除存储调试/断点信息的解决方案用户选项文件(.suo)。您将失去所有解决方案用户设置,例如断点位置。当你有“有趣的”调试事件时,这是第一次尝试,因为这个文件可能会损坏。

如果这不能解决问题,那么您还有其他问题正在进行,例如线程问题,内存过多碎片,垃圾回收问题,处理/终结问题等等。

3

我在另一个Stackoverflow线程上找到了这个问题的答案。这个问题有一个MS hotfix

+0

很多评论说修复不能修复任何东西=( – Ted 2011-12-19 00:15:27

0

我已经有了和你所描述的完全相同的问题。 MS修补程序解决了这个问题,现在我每次执行新的2008 VS安装时都会安装此修补程序。

+0

许多评论在网页上说,修复根本没有帮助=( – Ted 2011-12-19 00:15:48

+0

确保你删除你的bin/obj文件夹中的所有应用此修补程序后您的项目 – wal 2011-12-19 02:29:04

0

下载修补程序,我知道这是一个古老的线程,但这种调试时,发生了一个Excel插件在我的情况。

问题是我的断点是在后台线程中,在我的监视窗口中,我在Excel中的ActiveWorkbook上有一个旧的检查。与其他许多人一样,只能在Excel的主线程中进行调用。

一旦我删除了该手表,它再次调试得很好。