windows下定位程序cpu使用过高

利用windbg排查CPU占用过高问题

  • 问题描述

测试我们自己开发程序时,有时会发生CPU占用过高的问题。对于简单的程序,可能还容易排查是哪个线程占用了CPU。而对于类似流媒体,这样庞大的程序,排查难度较大。本篇案例会介绍一种排查此类问题的方法。

  • 排查方法

排查CPU过高的问题,主要的排查点,就是找到CPU被是哪些线程占用了。确定哪个线程占用CPU过高.

windbg的排查方法。

第一步,使用windbg直接attach到CPU占用过高的进程上

第二步,设置对应pdb路径,可以通过以下命令:.reload -f

第三步,使用!sunaway命令查看各个线程的占用CPU情况,如下例子:

0:002:x86> !runaway 7

 User Mode Time

  Thread       Time

   2:2460      0 days 0:00:46.597

   1:24e4      0 days 0:00:46.566

   0:2838      0 days 0:00:00.078

   4:b74       0 days 0:00:00.000

   3:a50       0 days 0:00:00.000

 Kernel Mode Time

  Thread       Time

   4:b74       0 days 0:00:00.000

   3:a50       0 days 0:00:00.000

   2:2460      0 days 0:00:00.000

   1:24e4      0 days 0:00:00.000

   0:2838      0 days 0:00:00.000

 Elapsed Time

  Thread       Time

   0:2838      0 days 3:36:05.195

   3:a50       0 days 3:35:34.947

   2:2460      0 days 3:35:34.947

   1:24e4      0 days 3:35:34.947

   4:b74       0 days 3:34:48.258

从打印可以看出,用户态的CPU,2和1号线程占用CPU非常多,我们通过命令(~线程号s)查看线程堆栈,确定线程的逻辑代码,进一步确定CPU过高的原因。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值