在我的Visual Studio实例中,即使我只是在C#控制台应用程序中写了一行返回值,在按下F5它执行实际代码后,我也要花一分钟的时间(我的意思是,在此之后停止在单个return语句上所花费的时间紧迫F5 -我在main
函数的return语句上设置了一个断点)。怎么了?有检查清单吗?
我正在使用Visual Studio 2008 VSTS版,并在Windows Server 2003 x64上进行调试。
在我的Visual Studio实例中,即使我只是在C#控制台应用程序中写了一行返回值,在按下F5它执行实际代码后,我也要花一分钟的时间(我的意思是,在此之后停止在单个return语句上所花费的时间紧迫F5 -我在main
函数的return语句上设置了一个断点)。怎么了?有检查清单吗?
我正在使用Visual Studio 2008 VSTS版,并在Windows Server 2003 x64上进行调试。
Answers:
您可能需要删除所有断点---请注意,您需要单击“删除所有断点”按钮(或使用Ctrl+ Shift+ F9),而不是只是删除它们一个接一个。如果Visual Studio破坏了您的解决方案设置,则后者将无法工作。为了使此功能正常运行,您可能需要先添加一个断点(聪明,是吗?)。
如果情况变得更糟,则可能需要删除.suo
文件,然后让Visual Studio从头开始创建新文件。请注意,但是,您将丢失个人解决方案配置设置(仅针对该解决方案,不会丢失其他任何解决方案)。但是,您可能要暂时移动/重命名文件,直到确定是否是问题所在为止。这样,您可以随时将其移回。我看到一些在线资源也建议删除(移动/重新命名)该.ncb
文件。
我以前看过 尝试删除所有断点,然后设置所需的断点。打F5。现在更快吗?
我刚刚注意到您提到了设置.NET源调试功能。尝试禁用它。您与Microsoft的源服务器的网络连接可能很慢。也可以在菜单工具 → 选项 → 调试 → 符号中禁用任何符号服务器连接。
也可以尝试在工具菜单→ 选项 → 调试 → 常规中禁用“启用属性评估和其他隐式函数调用” 。
或删除您的.suo文件,该文件可在您的解决方案(.sln)文件旁边找到。这解决了调试会话花费很长时间才能启动和停止的问题。
.suo
,重新打开,再次调试很快。
我有这个问题。在尝试了所有列出的建议并删除了所有Visual Studio扩展之后,我们最终发现以某种方式启用了IntelliTrace。禁用该功能可以修复所有问题。
您是否设置了很多断点?这些确实可以减慢启动时间。每次将新模块加载到进程地址空间时,都需要检查它们是否有效。
转到菜单工具 → 选项 → 调试器 → 符号,然后检查是否设置了公共符号或UNC网络路径。还要检查菜单工具*→ 选项 → 调试器 → 常规,以查看是否设置了源服务器。
所有这些因素都可能影响基于网络速度慢或服务器不可用的调试。5分钟的等待时间是网络超时。
如果未设置任何选项,请检查是否设置了_NT_SYMBOL_PATH环境变量。
我的同事的Visual Studio响应速度非常慢,从字面上看,花了几分钟的时间来执行调试步骤。
根本原因是在Visual Studio运行时疯狂的防病毒程序(Threatfire)。终止进程会立即解决所有问题。
另一个原因加上... 如何找到问题
对我来说,它是ShowOtherThreadIpMarkers选项。值为1会使Visual Studio(2010)变得异常缓慢(每个调试步骤3-5秒。值为0时,它又快了)。
那是什么选择?我不知道。我无法通过Visual Studio用户界面找到它。我取消选中其中所有可能的调试选项,但没有任何效果。
因此,我转到了“ 导入/导出设置”并加载了以前保存的旧设置,以便及时将其倒退,直到Visual Studio再次变快为止,然后再比较vssettings文件...等等。
我想说明一下,如果您在调试模式下在断点处停止时加载设置,则这些设置将立即生效。您不必停止调试器并重新启动。
特拉维斯(Travis)链接到ScottGu的博客中说:“我最近听说的另一个性能难题是一些人报告说使用Google工具栏加载项时遇到的一个问题。由于某些原因,这有时会导致附加Visual Studio时出现长时间延迟Studio调试器连接到浏览器。如果您在加载Web应用程序时遇到长时间延迟,并且安装了Google工具栏(或其他工具栏),则可能要尝试将其卸载以查看是否是问题的原因。”
确保您没有与服务器不再存在的过时网络映射(网络超时将杀死您)。或使用诸如Process Monitor之类的工具查看网络(或其他文件错误)是否长时间处于阻塞状态。
造成Visual Studio调试速度缓慢的另一个原因...
很久以前,我启用FusionLog
了查看导致程序集绑定问题的原因。
确保在使用后禁用它。为什么?因为启用后它将大量日志记录数据写入磁盘。
这是FusionLog
Window注册表(regedit.exe
)上的键:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion
改变ForceLog
,LogImmersive
并LogResourseBindings
从1个值(启用)为0(禁止)。
我也有这个问题,但与我的情况下的断点无关。这是我在任务窗口中添加的代码快捷方式:
我敢肯定,还有其他方式可以看到这样的问题,但是某个地方的错误会导致我遇到这个问题...删除所有选项可以解决此问题,但是那是我不想解决的问题做。所以,我调试了它,并在我的博客中写了它……您的问题听起来像我的。
我遇到了类似的问题,其他指南似乎都没有帮助。我重新启动无济于事。我已经删除了所有断点,删除了.suo文件,检查了是否没有从外部源加载符号,并检查了应用程序中不存在不可用的路径。
然后,我想清洗溶液。我在输出窗口中注意到,C#IntelliSense清洁时报告了一个问题:
从“ {B0C3592F-F0D1-4B79-BE20-3AD610B07C23}”读取元数据时出现问题(“系统找不到指定的文件。”)。重新加载解决方案之前,IntelliSense可能无法正常工作。
在这种情况下,一旦真正发现错误消息,它就会告诉您确切的解决方法。(在错误文本上做得很好,在可发现性上做得不好!)我卸载了解决方案的项目,然后重新加载了它们。这样我就能够成功运行干净的解决方案。它奏效了,调试器也做了。