使用Windbg簡單排查線程 CPU 100%的方法

環境: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 。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章