Visual C#2010通过调试器表示非常慢的异常处理

时间:2013-12-12 22:30:26

标签: c# visual-studio-2010 exception-handling

使用Visual C#2010 Express,当我抛出一个异常时,调试器需要大约一分半钟来打破用户未处理的异常。在此期间,我正在调试的应用程序和visual studio完全没有响应,VCSExpress.exe处理器使用率跃升至12-14%。计算机的其余部分(鼠标,其他应用程序等)仍然保持响应。

Visual Studio不是completely unusable,但从调试器运行时肯定是slowing my application down。我还没有找到减速的真正来源。这恰好在启动时发生,并不是gets worse over time的问题。

我已停用我的防病毒软件(eset nod32 v7)并且未安装任何扩展程序。我的CPU是英特尔酷睿i7 740QM @ 1.73GHz(四核超线程)。操作系统是Windows 7专业版。我已将Visual C#2010 Express更新为SP1(版本10.0.40219.1 SP1Rel)。我的硬盘没有通过S.M.A.R.T。

显示警告标志

我有两个用WPF编写的非常简单的测试场景。在第一个scneario中,我只是在单击按钮时抛出异常:

private void button1_Click(object sender, RoutedEventArgs e)
{
    throw new InvalidOperationException();
}

我手动测量了单击按钮和Visual Studio显示抛出/用户未处理异常对话框之间的时间(因此再次响应)。我测试了使用和不使用防病毒软件(AV)以及使用和不使用Visual Studio托管进程(VS)时打破抛出用户未处理异常的时间:

Debug, Unhandled, AV on -- 1:35.3, 1:38.0
Debug, Thrown, AV on -- 0:10.4, 0:11.5, 0:11.1
Debug, Thrown, AV off -- 0:10.7
Release, Thrown, AV off -- 0:9.1, 0:10.0
Release, Unhandled, AV off -- 1:34.5
Release, Thrown, AV off, No VS Hosting -- 0:8.9, 0:9.1
Release, Unhandled, AV off, No VS Hosting -- 1:19.6, 1:20.9

在打破未处理的例外时,需要1:30(1分30秒)才能恢复。防病毒没什么区别。拿走VS Hosting节省大约15秒。释放模式可节省约1秒钟。切换到突破抛出异常可以节省大量资源(恢复10秒),但这仍然是不可接受的。

我的第二个测试场景是对Visual Studio内外的捕获异常进行计时:

private void button2_Click(object sender, RoutedEventArgs e)
{
    System.Diagnostics.Stopwatch sw = new Stopwatch();

    sw.Start();
    try
    {
        throw new InvalidOperationException();
    }
    catch { }
    sw.Stop();

    label1.Content = string.Format("{0:0.000} seconds", sw.ElapsedMilliseconds / 1000.0);
}

对于这种情况,我将VS设置为仅在未处理的异常时断开,这样我就可以获得简单捕获异常的时序数据。我在VS和VS之外运行这个作为独立的EXE:

Release, Unhandled, AV off, No VS Hosting -- 0:1.965, 0:1.812, 0:1.985
Debug, Unhandled, AV off, No VS Hosting -- 0:2.333, 0:2.136, 0:2.305
Release EXE, AV off -- 0:0.002, 0:0.000, 0:0.000
Debug EXE, AV off -- 0:0.002, 0:0.000, 0:0.000

在VS之外没有减速。在VS内部这需要大约2秒,对于四核超线程CPU和一个微小的try / catch块来说,这似乎相当过分。

我正在寻找链接问题(系统环境设置等)中的一些线索,并监控文件系统/磁盘活动以查看是否可以获得任何线索。任何额外的帮助非常感谢!

不过,我不想重新安装Visual Studio或我的操作系统

谢谢!

更新 我安装了VS 2012 Express,数字是:

Test 1:
Debug, Unhandled, AV off -- 0:01.6
Debug, Thrown, AV off -- 0:01.1

Test 2:
Debug, VS Hosting -- 0:1.202
Debug, No VS Hosting -- 0:1.191
Release, VS Hosting -- 0:1.220

VS2012中的数字很多更好。很明显,我的问题的一个解决方案是升级到VS2012,这正是我计划做的事情。但是,如果有人有任何想法,我仍然希望解决这个问题。

0 个答案:

没有答案