Windbg 不是这项工作的正确工具。转储只是快照,因此您不知道之前发生了什么。使用 ETW 和此处的 CPU 采样,它汇总所有调用并详细显示 CPU 使用情况。
安装作为 Windows 10 SDK 一部分的 Windows Performance Toolkit(V1607 适用于 Win8/8.1(Server2012/R2) 和 Win10 或V1511 SDK,如果您使用 Windows 7/Server2008R2),运行WPRUi.exe
并选择CPU Usage
并按下Start
。捕获 1-2 分钟的高 CPU 使用率,然后单击Save
。使用 WPA.exe (Perf Analyzer) 打开生成的 ETL,将图形拖放CPU Usage (Sampled)
到 analysys 窗格中
并加载调试符号。现在在图中选择您的进程,放大并展开堆栈,在这里您可以看到所有调用的 CPU 使用权重
在此示例中,Internet Explorer 的大多数 CPU 使用率来自 HTML 内容。
对于 .NET 应用程序,WPA 向您显示 .net 相关的分组,例如 GC 或 JIT:
展开 w3wp 进程的堆栈以查看它在做什么。从名字你应该知道会发生什么。