multithreading - 当线程消耗大量CPU时,如何打印线程的执行堆栈?

标签 multithreading cpu windbg diagnostics

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

应用程序有时会占用大量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/

相关文章:

java - 你会如何设计协作/可共享的文本编辑器 : Key points are given below

c - 在 Linux 中从/proc 文件系统获取硬件信息

.net - 如何通过 windbg 从 'System.Drawing.Bitmap' 中提取图像到文件?

windows - 使用WinDbg调试0xc000001d异常

c++ - `sizeof` C++ 应用程序中的所有类型

python - 有人可以帮助我使用 python 网络程序吗?

java - 运行线程 2 毫秒,然后等待特定时间后再运行

multithreading - 我是否曾经*不想*想使用读/写锁而不是普通的互斥锁?

linux - nanosleep sleep 60 微秒太长

javascript - CPU 昂贵的 JavaScript