如何使用Windbg 查Cpu飆公升問題

2022-02-13 11:45:32 字數 2006 閱讀 8797

2、開啟windbg    設定  file-〉symbol search path 位址如下 

c:\ symbols; srv*c:\mylocalsymbols*";srv*c:\mysymbol*

3、開啟windbg 將程序轉存的程序檔案 拉進windbg

4、在windbg介面 輸入載入命令

.load c:\windows\microsoft.net\framework64\v4.0.30319\sos.dll  載入sos.dll

5、執行 !runaway 命令    runaway 命令 有三種模式 

!runaway命令顯示每個執行緒消費的時間

bit 0 (0x1) 讓偵錯程式顯示每個執行緒消耗的使用者模式時間(user time),預設不加就是0x1

bit 1 (0x2) 顯示每個執行緒消耗的核心時間(kernel time)。

bit 2 (0x4) 顯示每個執行緒從建立開始經歷了多少時間。

就是三者的組合:1 2 3 4 5 6 7

執行!runaway 1

28執行緒占用的核心時間最長,其次是 35 37,

~28s 切換到執行緒28 

6、檢視執行緒的呼叫堆疊  !clrstack   察看的是managedcode的堆疊

7 !dumpstack檢視native和managed的堆疊

8、有的時候執行緒池會使造成問題的根本原因 使用 !threadpool  檢視,針對 我本地的這個問題  可以看到就是因為執行緒池問題引起的 

!runaway命令顯示每個執行緒消費的時間

bit 0 (0x1) 讓偵錯程式顯示每個執行緒消耗的使用者模式時間(user time),預設不加就是0x1

bit 1 (0x2) 顯示每個執行緒消耗的核心時間(kernel time)。

bit 2 (0x4) 顯示每個執行緒從建立開始經歷了多少時間。

就是三者的組合:1 2 3 4 5 6 7

執行!runaway 1

28執行緒占用的核心時間最長,其次是 35 37,

~28s 切換到執行緒28 

6、檢視執行緒的呼叫堆疊  !clrstack   察看的是managedcode的堆疊

7 !dumpstack檢視native和managed的堆疊

8、有的時候執行緒池會使造成問題的根本原因 使用 !threadpool  檢視,針對 我本地的這個問題  可以看到就是因為執行緒池問題引起的 

使用Windbg尋找高CPU占用執行緒

在乙個任務中使用多執行緒程式設計,程式執行一段時間後就佔滿了cpu,嚴重拖慢系統執行速度。這裡所說的高cpu,意思就是乙個執行緒占用了乙個cpu的大部分執行時間,如果是單核的cpu,表現為cpu占用近100 相應的雙核的話乙個執行緒會佔到50 的cpu。我的電腦是雙核四執行緒的cpu,所以當乙個執行...

使用Windbg尋找高CPU占用執行緒

在乙個任務中使用多執行緒程式設計,程式執行一段時間後就佔滿了cpu,嚴重拖慢了系統的執行速度。這裡所說的高cpu,意思就是乙個執行緒占用了乙個cpu的大部分執行時間,如果是單核的cpu,表現為cpu占用近100 相應的雙核的話乙個執行緒會佔到50 的cpu。我的電腦是雙核四執行緒的cpu,所以當乙個...

如何查耗用CPU的SQL語句

a 在linux中用 top d 2 u oracle 命令檢視 注意觀察一段時間,找出cpu耗用持續比較高的oracle程序的pid值。b 檢視此程序對應執行的session select from v process where spid 25325 查到addr為 繼續查其對應的session...