VS 2015诊断工具放缓时间
我很困扰这个问题,它不会让我在一段时间内适当地进行调试,并且无法在网上找到关于它的信息。VS 2015诊断工具放缓时间
问题是,当我用调试器运行我的应用程序时,除了它的性能比没有它更糟的事实,当我在查看诊断工具的时间线时,我可以看到它没有与应用程序运行的时间相匹配。我认为这是更好地用一个例子理解:
- 我开始调试我在t_real = 0 t_debug = 0
- 程序开始执行一些比较苛刻的操作应用。调试器从现在开始影响性能。 t_real = 5 t_debugger = 5
- 计算结束。 t_real = 30 t_debugger = 100
为什么这种时间差?我正在使用多线程的C#.NET应用程序。
诊断工具将收集许多数据信息,如CPU使用率/内存或其他数据,它确实会或多或少地影响VS性能。
其实我也向产品团队汇报过一个问题,Nik分享了一个道理,说明它为什么有如此庞大的I/O。即使它不是你的问题,但至少,我们可以知道诊断工具确实忙于收集更多信息:)
Visual Studio 2015 StandardCollector.Service.exe runaway I/O。
如果您想在不收集诊断信息的情况下调试您的应用程序,可以在工具 - >选项 - >调试下禁用此工具。
当然,如果你有很好的建议,你也可以提交一个请求here。
感谢您的回复。我试图禁用诊断信息,但应用程序的性能仍受到显着影响,使其调试非常困难。 – Pekuso
@Pekuso,你调试过哪种应用程序?也许你可以在工具 - >选项 - >调试下检查你的项目属性或调试器选项。某些选项或多或少地影响性能。像项目属性“Visual Studio托管过程”一样。或工具 - >选项 - > IntelliTrace或调试 - >符号服务器。你可以禁用它,再次调试你的应用程序。如果仍然没有帮助,只需使用VS探查器工具来收集详细的功能性能,也许它与某些代码行或功能有关。 –
声明:我使用Visual Studio,特别是诊断工具。
诊断工具显示的应用程序时间与感知的应用程序时间不匹配的情况很常见。这是由于调试器在进程内执行操作,而我们不希望在捕捉追踪中显示。为了解决这个问题,我们基本上得到了调试器在过程中何时开始工作以及何时停止的时间戳。然后我们减去这个时间,这是用户代码的实际应用程序处理时间,并将其显示在泳道图中。我的猜测是你的应用/调试设置正在做一些需要大量调试器干预的事情。
一个简单的例子是一个控制台应用程序,它在循环中引发和捕获异常(见下文)。你可以在调试器中运行这个应用程序,甚至不用停下来,它看起来好像几乎没有爬行一样,因为调试器在每次执行过程中都在进程内部工作。
namespace ConsoleApp2 {
using System;
class Program {
static void Main(string[] args) {
while (true) {
try {
throw new Exception();
} catch (Exception) { }
}
}
}
}
你能从我的建议中得到有用的信息吗?请您分享有关此问题的最新信息? –