Windbg使用记录-高CPU问题分析
常见问题及解决:
以下为使用Windbg 调试高CPU问题的方法思路,总结一下: 1. 查看应用进程的CPU使用率 2. 间隔一段时间,抓两个Dump 3. 使用Windbg分析两个Dump文件,使用!runaway找到最消耗CPU时间片的线程,然后优化
- 错误提示问题解决:
- 具体解决方案请查看:The version of SOS does not match the version of CLR you are debugging; SOS.dll版本不匹配; Dump文件不同环境msc..._weixin_30895603的博客-CSDN博客
-
The version of SOS does not match the version of CLR you are debugging. Please load the matching version of SOS for the version of CLR you are debugging. CLR Version: 4.0.30319.34209 SOS Version: 4.8.9037.0
- 你需要到抓取dump文件的机器上,把 mscordacwks.dll 和Sos.dll 拷贝下来,如果是别人传给你dump,则最好让他将这3个文件一起拷贝给你。拿到DLL后,确认版本正确后,改为类似一下的名字
- 以下为从生产服务器拷贝3个文件到本地下来(抓取dump文件的计算上):


-
文件重命名后,可以放到windbg的exe目录下,与windbg.exe 同一个目录,也可以放到一个指定的目录下。然后运行:
-
.cordll -u -ve -lp c:\clr4.0.30319 // C盘有个clr1008文件夹,我从那里加载调试DLL,-lp 指定目录
.cordll -ve -u –l //从默认路径加载调试DLL。
- 接着下一步运行命令:
-
.load clr4.0.30319\sos.dll //clr4.0.30319是上一步你创建的目录
.chain![]()
- 接着运行:.unload和.setdll
-
.unload C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos.setdll c:\clr4.0.30319\sos.dll
-
![]()
-
!dumpheap -stat //检查当前所有托管类型的统计信息
-
![]()
- Dump转储文件,分32和64位,这里使用32位任务管理器转储文件(syswow64文件夹下的task.exe任务管理器)
- Windbg软件:
常用命令:
- !runaway
- !threads查看托管线程
![]()
- 其他命令:Windbg程序调试系列5-高CPU问题分析 (bbsmax.com)
- 具体执行结果如下:





浙公网安备 33010602011771号