如何识别在 PerfMon 中占用 100% CPU 使用率的应用程序线程?

How do I identify the thread in application that takes 100% CPU usage in PerfMon?

正在尝试 fine-tune/optimize 我的 C# 应用程序。在 运行 PerfMon 中,我在某些操作中一直达到 100% 的峰值。我可以从 PerfMon 获取线程实例号,但是从 Visual Studio 2015 的线程 window 调试时,我怎么知道对应的是哪个线程?

还是我做错了?我想找出 CPU 使用率不时飙升的线程的身份。提前致谢!

为此,我将使用 Process Explorer。进程属性(双击进程打开)有一个线程选项卡。这可以按 CPU 或周期排序,并有一个按钮来快照线程堆栈。

它还将使用调试符号来解析该堆栈的内容。

这使得识别线程的代码变得更加容易 运行。

另一个选项是 PerfView 来自 Windows 调试工具:它提供更多数据(但学习曲线更陡)。

免责声明:我在 Visual Studio

中使用分析器

我会使用 Visual Studio 调试器附加到进程,然后调出诊断工具 window(因为你说你使用的是 VS 2015)。如果您切换到 CPU 使用选项卡,您可以启用 CPU 分析,重现您的问题,然后中断该过程。这将导致探查器分析收集到的跟踪。最后,您可以点击过滤器下拉菜单,这将允许您按线程过滤调用树。我们还按线程 ID 列出了 CPU 用法,因此您可以使用它来确定哪个线程正在执行工作以及它在做什么。