如何在消耗大量CPU时打印执行堆栈的线程?

时间:2012-02-24 00:51:16

标签: multithreading cpu windbg diagnostics

有没有人知道如何完成以下任务。

应用程序有时会占用大量CPU,ProcessExplorer(procexp.exe)显示周期性高内核CPU负载(~60-80)。我在procexp中看到一些线程做了一些消耗大量内核时间的东西。在那一刻,我想打印那些忙线程的执行堆栈。

是否有任何监控工具可以显示该类信息或某些WinDbg脚本等?

2 个答案:

答案 0 :(得分:2)

我建议使用ProcDump

命令如:

  

procdump -c 60 -s 3 -ma -n 5 -x Your.exe your.dmp

当进程连续3秒超过60%的CPU利用率并且最多执行5次时,将进行完全内存转储。通过这种方式,您可以比较不同的转储,并查看流程花费时间的位置。

答案 1 :(得分:1)

有一个机会是使用sysinternals中的ProcDump进行转储 CPU负载超出您指定的限制。 http://technet.microsoft.com/en-us/sysinternals/dd996900
或者您可以查看windbg帮助“追踪处理器生猪”