【发布时间】:2016-09-03 08:28:35
【问题描述】:
我有一个 WPF 应用程序,它执行一些异步网络(通过 100 个并行套接字进行协商)。如果我启动附加了 VS 调试器的应用程序并启动网络代码,我的 CPU 使用率将跃升至 60%(在 VS、VS 调试器和 vshost 进程之间共享),并且 UI 变得非常无响应,持续冻结长达 3 秒。当我将调试器附加到已经运行的进程时,也会发生同样的情况。在正常情况下它使用 1-3% 的 CPU 并且 UI 很流畅。
“CPU 使用率”模式下的 VS 分析器显示 CPU 被 [外部代码] 使用
如何解决此问题?
【问题讨论】:
-
在“输出”窗口中查看发生了什么,水晶球表示您看到了 很多 条消息。它们并不便宜。
-
确实我有很多“抛出异常”消息。有没有办法防止这种情况发生?
-
异常以大约 30/秒的速度抛出,但这在我的用例中是正常的,它们都被捕获了。
-
好吧,看起来减速确实是由很大的异常率引起的。我试图删除我的网络代码并用一个异常抛出替换它,但我仍然得到无响应的 UI。我还在输出窗口中禁用了第一次机会异常,但它没有解决问题。调试器是否有一些选项可以停止收集第一次机会异常?
-
每秒 30 个不太可能是简单的解释。右键单击输出窗口并取消选中“异常消息”以减少开销。接下来使用分析器是明智的。
标签: c# .net debugging visual-studio-2015 profiling