Visual Studio减慢了应用程序

时间:2010-03-07 07:33:38

标签: c# visual-studio debugging

这是一个模糊的问题,但有什么我可以做的关于视觉工作室减慢应用程序?如果我在visual studio之外运行可执行文件,它将以非常可接受的速度运行。如果我在启用调试器的visual studio中运行它,它的运行速度会慢近200倍。我试图卸载并重新安装Visual Studio无济于事。我删除了所有插件(蚂蚁和resharper),但仍然没有。我在另一台计算机上的视觉工作室里运行了这个项目,速度很正常。我该怎么做才能解决这个问题?它似乎最近发生过,但可能会逐渐发生。

更新:我现在已经在其他视觉工作室中运行了它,并且减速保持不变。我唯一的结论就是以我在应用程序中的速度分配内存的方式导致调试器以某种方式降低速度。任何人都有过这方面的经验吗?

5 个答案:

答案 0 :(得分:4)

在调试器中运行时,异常非常昂贵,并且如果抛出并捕获了许多应用程序,则可能会降低应用程序的速度。查看Visual Studio的“输出”窗口,您可以在其中查看抛出的异常。

答案 1 :(得分:3)

您是否从符号服务器中提取符号?这是经济放缓的常见原因。

如果已设置,则检查_NT_SYMBOL_PATH,如果使用VS 2008 +,则检查调试选项

答案 2 :(得分:2)

通常,Visual Studio调试器不会降低速度。这必须是您的应用程序特有的东西。

例如,最近有一个关于SO的问题来自于在调试时获取OutOfMemoryException但在调试器外部运行时没有的人。这似乎是由于他分配内存的方式 - 该技术对加载到内存中的程序集数量很敏感。大多数程序对调试器的这种被动效果不敏感。也许你也遇到了与调试器有关的一些影响,但还不完全是调试器的“错误”。


Mitch Wheat建议你可能正在运行病毒扫描程序。这让我想起了一个类似的软件,它自己开始关注Visual Studio的加载和卸载程序集。这是一个提供“端点安全性”的VPN软件。它旨在检查连接到VPN时正在运行的程序,并确保它们符合安全策略。这意味着要了解每个装载的装配体。

Visual Studio加载和卸载大量程序集。这个VPN软件对这个事实如此感兴趣,它实际上引起了BSOD - 我唯一一次看到应用程序导致BSOD - 因为它安装了文件系统过滤器或其他一些,并且在内核模式下被通知。加上某种错误就足以让系统崩溃。

因此,一般来说,寻找一些关心计算机上正在运行的软件。也许是“端点安全”,可能是病毒扫描程序,可能是搜索索引器,或者其他什么。

答案 3 :(得分:2)

问题是如果Windows检测到您的程序在调试器下运行,则会在特殊的Debug Heap中出现问题。这似乎发生在操作系统级别,并且与编译的任何调试/发布模式设置无关。

您可以解决此问题'通过设置环境变量:_NO_DEBUG_HEAP = 1

同样的问题让我疯了一会儿;今天我找到了以下内容,从这篇文章中衍生出来: http://blogs.msdn.com/b/larryosterman/archive/2008/09/03/anatomy-of-a-heisenbug.aspx

答案 4 :(得分:0)

VS调试器为您的代码添加了其他命令,以便允许它带来的所有功能。缺点可能是减慢您的应用程序。

也许这就是为什么你的应用程序在另一台计算机上运行可执行文件时工作正常的原因。

然后这是一个不应该打扰你的问题,因为应用程序的发布版本很重要 - 如果最终版本运行良好,谁会关心调试版本的性能。