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...