使用 WinDbg 分析 C# 程序高 CPU 占用问题

使用 WinDbg 分析 C# 程序高 CPU 占用问题

标   题:使用 WinDbg 分析 C# 程序高 CPU 占用问题

作   者:WPFDevelopersOrg - 驚鏵

原文链接[1]:https://github.com/WPFDevelopersOrg/WPFDevelopers

码云链接[2]:https://gitee.com/WPFDevelopersOrg/WPFDevelopers

1. 打开任务管理器找到我们自己的程序,转储文件 crash.DMP

2. 打开 WinDbg

3. 打开 crash.DMP 文件

4. 执行以下命令:
!runaway

从上图能看出来线程 0 占用 CPU 最高,通过命令切换到线程 0s

~0s

继续输入 k 查看更详细的堆栈信息

k

再次输入 !eestack 查看混合堆栈

!eestack

从 !eestack 的输出可以看到线程 0 的完整堆栈信息,线程 0 正卡在 Console.ReadLine() 方法的锁操作上。 

5. 所以定位到出现问题的代码就在 Program.Main()  应用程序主入口处
while (true)
{
    var input = Console.ReadLine();
    if (input?.ToLower() == "exit")
        break;
    if (!string.IsNullOrEmpty(input))
    {
        Console.WriteLine($"处理命令: {input}");
    }
}

上述内容展示了在用户电脑上遇到程序问题时,如何使用 WinDbg 进行 CPU 占用过高的分析。通过分析 Dump 文件,我们可以定位程序异常导致高 CPU 占用的原因。然而,在编码过程中,如果遇到类似的性能问题,借助 Visual Studio 的性能探查器(Performance Profiler)就能快速发现瓶颈和潜在问题,帮助开发者更高效地定位和解决问题。

GitHub 源码地址[3]

Gitee 源码地址[4]

参考资料

[1] 

原文链接: https://github.com/WPFDevelopersOrg/WPFDevelopers

[2] 

码云链接: https://gitee.com/WPFDevelopersOrg/WPFDevelopers

[3] 

GitHub 源码地址: https://github.com/WPFDevelopersOrg/WPFDevelopers/blob/dev/src/WPFDevelopers.Shared/Styles/Styles.DataGrid.xaml

[4] 

Gitee 源码地址: https://gitee.com/WPFDevelopersOrg/WPFDevelopers/blob/dev/src/WPFDevelopers.Shared/Styles/Styles.DataGrid.xaml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值