Windbg程式除錯系列1 常用命令說明 示例

2022-01-10 16:02:39 字數 2460 閱讀 4236

工欲善其事必先利其器,我們先從常用的命令和示例說起。

1. 先準備乙個dump檔案,建議使用64位應用程式。例如:64位iis應用的w3wp程序,64位exe程序都可以。如果抓dump檔案,很簡單:任務管理器-程序-右鍵【建立轉儲檔案】

開啟之後,ctrl+d,開啟第一步抓的dump檔案,開始今天的常用命令介紹。

1. 載入sos除錯擴充套件dll

3. 列印當前除錯符號檔案搜尋路徑

0:000> .sympath
4. 檢視執行緒池,分析並確認cpu使用率,可以使用哪個指令

0:000>!threadpool

cpu utilization: 2%

worker thread: total: 19 running: 2 idle: 17 maxlimit: 32767 minlimit: 4

work request in queue: 0

--------------------------------------

number of timers: 2

--------------------------------------

completion port thread:total: 4 free: 4 maxfree: 8 currentlimit: 4 maxlimit: 1000 minlimit: 4

5. 檢視執行緒的整體運**況

!threads
6. 查詢指定執行緒的呼叫堆疊,例如34號執行緒

7. 檢視執行緒消耗cpu資源情況

第一列是執行緒號,第二列是total的cpu使用時間

8. 檢視當前執行緒棧上所有物件的資訊,dump stack objects

9. 查詢記憶體中指定物件的資訊 dump object

!do
10. 查詢記憶體中指定陣列物件的資訊 dump array

!da
11. 檢視當前執行緒的堆疊和每行堆疊上的變數資訊

!clrstack -a

sxe clr

g!pe

!clrstack

sxd clr

qd

13. 檢視託管堆上記憶體物件的分布、三個代的資訊

14. 檢視託管堆上載入的dll

!eeheap -loader
15. 什麼是記憶體物件代提公升,垃圾**中未**的物件也稱為倖存者,並會被提公升到下一代。通過代提公升的情況,可以分析物件的存活時間

16. 查詢記憶體中各類物件的總個數和總記憶體占用

!dumpheap  -stat
17. 查詢記憶體中大物件的個數和物件大小

!dumpheap -stat  -mt -min 85000
18. 檢視記憶體的析構佇列的指令

!finalizequeue
19. 請輸入檢視物件000000123557dfc0的gcroot的指令

!gcroot 000000123557dfc0
20. 檢視執行緒阻塞的指令

!syncblk
21. 檢視dump中所有system.net.sockets.socket物件統計資訊的指令

!dumpheap -type system.net.sockets.socket -stat
windbg-mex擴充套件使用總結

接下來,我會以記憶體洩露的場景,給大家分享windbg分享的思路和方法。

周國慶2018/10/28

WinDbg除錯 崩潰程式

目的 學習和記錄windbg的一些使用。版本不是最新的,如果需要最新的可以自己在網上搜尋一下,當然還有很多漢化版的 我個人喜好原版 1.1關於配置 這個主要就是symbol的問題了,網上一般都會推薦 設定環境變數例如 我的電腦 右鍵選單 屬性 高階選項卡 環境變數 系統變數 新建 變數名 nt sy...

windbg除錯C 程式

windbg的安裝與配置 安裝後就可以在開始選單找到windbg了。要先除錯.net的程式,需要使用乙個擴充套件的dll,它在c windows microsoft.net framework v2.0.50727路徑下,檔名是sos.dll。有了它我們才能執行命令 clrstack 拷貝乙份到wi...

WinDBG常用除錯命令

查詢符號 3.檢視 event 物件的訊號狀態 object basenamedobjects dt b nt kevent xx 4.檢視 lasterror 值 gle 5.指定進製形式,0x 0n 0t 0y 分別表示 16 10 8 2 進製 0x12345678 0n10 evaluate...