Visual Studio调试器问题

Ale*_*pin 7 debugging visual-studio-2008 visual-studio

在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);
   }
}
Run Code Online (Sandbox Code Playgroud)

您需要在"XElement element = new XElement("element");"行上放置条件断点;" 条件"i == 999".然后启动程序,等待2-3秒并将正常断点放在"parentElement.Add(element);"行上.现在VisualStudio冻结,无法调试.在WinForm应用程序中,它会关闭按F10后打开的所有表单.

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

我还注意到,如果我只在main方法的末尾放置一个断点,那么与递归方法中的条件断点相比,代码运行得非常快.

Geo*_*ton 0

不确定我是否遇到过这种情况,但如果我是你,如果你没有遇到过,请删除你的 bin 文件夹,然后重建你的项目。然后运行干净的解决方案以确保安全。有时,随着 PDB 过时,可能会发生奇怪的事情 - 因此您需要清除它们。

另外,如果您调用外部程序集,请删除它们并重新附加它们,以确保您拥有最新的程序集。