您的位置:首页 > 其它

使用Windbg简单排查线程 CPU 100%的方法

2017-06-02 19:42 387 查看
环境:Windows7
工具:Windbg
 
方法很简单:
1、  使用Windbg直接attach到CPU 100% 的进程上面(另外注意的是如果多核的,可能就不是100%了,譬如双核的可能就是CPU持续保持在50%的消耗)。
 
2、使用!sunaway命令查看各个线程的消耗程度。
0:027> !runaway
 User Mode Time
  Thread       Time
  20:978       0 days 0:07:07.765
   0:f58       0 days 0:00:06.015
  18:19c       0 days 0:00:00.046
  14:48c       0 days 0:00:00.015
  13:424       0 days 0:00:00.015
  27:eb0       0 days 0:00:00.000
  26:a58       0 days 0:00:00.000
  25:c30       0 days 0:00:00.000
  24:e40       0 days 0:00:00.000
  23:c6c       0 days 0:00:00.000
  22:9f0       0 days 0:00:00.000
  21:974       0 days 0:00:00.000
  19:98        0 days 0:00:00.000
  17:494       0 days 0:00:00.000
  16:418       0 days 0:00:00.000
  15:9a8       0 days 0:00:00.000
  12:51c       0 days 0:00:00.000
  11:f7c       0 days 0:00:00.000
  10:54c       0 days 0:00:00.000
   9:594       0 days 0:00:00.000
   8:570       0 days 0:00:00.000
   7:dc        0 days 0:00:00.000
   6:110       0 days 0:00:00.000
   5:510       0 days 0:00:00.000
   4:514       0 days 0:00:00.000
   3:50c       0 days 0:00:00.000
   2:674       0 days 0:00:00.000
   1:648       0 days 0:00:00.000
         ……
 
         从这个信息我们可以看到20号线程的CPU时间消耗是最多的,不出意外,罪魁祸首就是它了。
 
3、使用~*kb命令,列出所有线程的callstack,然后查看20号线程的情况,如下:
  20  Id: de4.978 Suspend: 1 Teb: 7ff95000 Unfrozen
ChildEBP RetAddr  Args to Child             
05e8fe84 0202efc2 0202ef97 7c947e71 03d53248 TSVulEngine!TKBLogUpload::PrivateStartUpload+0x16 [d:\...\vul_tkblogupload.cpp @ 220]
05e8fe8c 7c947e71 03d53248 00000001 046e10a8 TSVulEngine!UploadTimerRoutine+0x2b [d:\... \vul_tkblogupload.cpp @ 43]
 
         这样基本就可以确定是神马问题了O(∩_∩)o 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: