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)
- 具体执行结果如下:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?