首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual调试器问题

Visual调试器问题
EN

Stack Overflow用户
提问于 2010-03-03 15:55:58
回答 7查看 6.1K关注 0票数 7

在Visual 2008中,调试大约1-2分钟后,当我按F10 (逐步结束)时,调试器挂起,Visual冻结5-10秒,然后转到下一行。然后,无论我做什么(F10、F5、F11等),调试器都会继续执行,就好像我按下了F5和我正在调试的所有表单一样。我总是必须重新启动应用程序。

它很难重现,而且它并不是每次我想调试一些东西时都会发生。有人有解决办法吗?

编辑:我已经成功地用以下代码再现了我的问题:

代码语言:javascript
复制
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方法的末尾放置一个断点,那么与递归方法中的条件断点相比,代码运行得非常快。

EN

回答 7

Stack Overflow用户

发布于 2010-03-03 21:08:27

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

如果这不能解决问题,那么您还有其他的问题,例如线程问题、过多的内存碎片、垃圾收集问题、dispose/finalize问题等等。

票数 4
EN

Stack Overflow用户

发布于 2010-03-11 19:33:48

我在另一个堆栈溢出线程上找到了这个问题的答案。这个问题有一个MS 热修复

票数 3
EN

Stack Overflow用户

发布于 2010-03-03 16:16:51

我发现,每当我在符号目录列表中添加不存在的远程unc共享时,就会出现这样的减速。

尝试转到Tools -> Options -> 调试 -> 符号,并确保该列表中的所有目录实际上都存在。

不过,我不知道这会如何使你的节目在那之后继续下去。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2372746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档