有人知道如何完成以下任务。
应用程序有时会占用大量CPU,ProcessExplorer(procexp.exe)会显示周期性的高内核CPU负载(〜60-80)。我在procexp中看到某些线程执行某些操作会占用大量内核时间。在那一刻,我想打印那些繁忙线程的执行堆栈。
是否有任何监视工具可以显示此类信息或某些WinDbg脚本等?
最佳答案
我建议使用ProcDump。
像这样的命令:
procdump -c 60 -s 3 -ma -n 5 -x Your.exe your.dmp
当进程连续3秒超过60%的CPU使用率时,将进行一次完整的内存转储,并且最多执行5次。这样,您可以比较不同的转储,并查看流程在哪里花费时间。
关于multithreading - 当线程消耗大量CPU时,如何打印线程的执行堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9423818/