高 CPU 使用率的 32 位进程的 Process Dump 分析
Posted
技术标签:
【中文标题】高 CPU 使用率的 32 位进程的 Process Dump 分析【英文标题】:Process Dump analysis of 32 bit process for High CPU usage 【发布时间】:2020-06-10 11:34:59 【问题描述】:我有一个 32 位 CPP Windows 服务应用程序,有时它的 CPU 使用率会随机升高 (70%)。我已经从 32 位任务管理器(32 位转储)和 64 位任务管理器(64 位转储)中获取了 exe 的进程转储。谁能指导我如何分析这些转储,以确定我的代码的哪一部分导致了这种高 CPU 使用率。
【问题讨论】:
你应该可以在visual studio或windbg中打开它 在 WinDbg 中打开转储并使用!runaway
。这使您可以细分进程中每个线程所花费的时间。有关详细信息,请参阅帮助文件。
我正在使用 VS 调试转储,我在调试转储时看到多个线程正在运行。无论如何我们可以知道哪个线程占用了高 CPU? @BrianRasmussen
【参考方案1】:
高CPU使用率32位进程的Process Dump分析
我建议你可以在visual studio中调试这些转储文件,这样你就可以发现哪里出了问题。
建议
1) install Windows Driver Kit in VS
2)打开VS并选择File-->Open-->File-->选择dump文件。
3) 将 dll 和 pdb 文件(xxx\project name\bin\Debug
) 的路径配置到 Symbols Window 中,并在 Symbols Window 下查看 Microsoft Symbol Server。
4)然后您可以点击Debug with Managed Only进行调试。
更详细的步骤可以参考Use Visual Studio to debug the dump files。
另外,你也可以试试use Windbg to analysis dump files和this。
【讨论】:
感谢您的回答。我正在使用 VS 调试转储,我在调试转储时看到多个线程正在运行。无论如何我们可以知道哪个线程占用了高 CPU? @Perry Qian-MSFT以上是关于高 CPU 使用率的 32 位进程的 Process Dump 分析的主要内容,如果未能解决你的问题,请参考以下文章