在Visual 2008中,调试大约1-2分钟后,当我按F10 (逐步结束)时,调试器挂起,Visual冻结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元素=新XElement(“==”);“与条件"i == 999”行上放置一个条件断点。然后启动程序,等待2-3秒,并在“parentElement.Add(元素);”行上放置普通断点。现在VisualStudio冻结了,调试是不可能的。在WinForm应用程序中,它关闭按F10后打开的所有窗体。
但是我发现,如果我在"Tools -> Options -> Debugging“中禁用了debug选项”调用变量窗口中的对象的字符串转换函数“,我可以进行调试。这是缓慢的,但至少VisualStudio没有冻结。有人知道它为什么要这么做吗?因为我不想禁用这个选项,没有它的调试真的很烦人。
我还注意到,如果我只在main方法的末尾放置一个断点,那么与递归方法中的条件断点相比,代码运行得非常快。
发布于 2010-03-03 21:08:27
尝试删除存储调试/断点信息的解决方案用户选项文件(.suo)。您将丢失所有解决方案用户设置,例如断点位置。当您有“有趣”调试事件时,这是第一件要尝试的事情,因为这个文件可能会被破坏。
如果这不能解决问题,那么您还有其他的问题,例如线程问题、过多的内存碎片、垃圾收集问题、dispose/finalize问题等等。
发布于 2010-03-11 19:33:48
我在另一个堆栈溢出线程上找到了这个问题的答案。这个问题有一个MS 热修复。
发布于 2010-03-03 16:16:51
我发现,每当我在符号目录列表中添加不存在的远程unc共享时,就会出现这样的减速。
尝试转到Tools -> Options -> 调试 -> 符号,并确保该列表中的所有目录实际上都存在。
不过,我不知道这会如何使你的节目在那之后继续下去。
https://stackoverflow.com/questions/2372746
复制相似问题