Windbg程序調(diào)試是.Net高級開發(fā)需要掌握的必備技能,分析內(nèi)存泄露、分析高CPU、分析線程阻塞、分析內(nèi)存對象、分析線程堆棧、Live
Dedugging。這個領域可以說一個技能+場景化應用的結合,如果單學Windbg命令,不理解實際Troubleshooting中的作用,是沒有意義的。所以,準備搞個系列文章,3~5篇,分享給大家:
工欲善其事必先利其器,我們先從常用的命令和示例說起。
1. 先準備一個Dump文件,建議使用64位應用程序。例如:64位IIS應用的w3wp進程,64位exe進程都可以。如果抓Dump文件,很簡單:
任務管理器-進程-右鍵【創(chuàng)建轉(zhuǎn)儲文件】
2. 下載并安裝Windbg,下載鏈接:
https://developer.microsoft.com/zh-cn/windows/downloads/windows-10-sdk
<https://developer.microsoft.com/zh-cn/windows/downloads/windows-10-sdk>
,一路下一步,選擇【Debugging Tools for Windows】
?
打開之后,Ctrl+D,打開第一步抓的Dump文件,開始今天的常用命令介紹。
1. 加載SOS調(diào)試擴展dll
.loadby sos clr
2.?設置并重新加載調(diào)試符號文件的命令,將.Net
一些重要的pdb文件下載到指定的路徑中,加載到Windbg調(diào)試環(huán)境中,這樣,我們就可以看到程序在哪一行出錯,運行到哪一行了
1 .symfix+ C:\symbols 2 .reload
3. 打印當前調(diào)試符號文件搜索路徑
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. 查詢指定線程的調(diào)用堆棧,例如34號線程
~34s
!clrstack
7. 查看線程消耗CPU資源情況
!runaway
第一列是線程號,第二列是Total的CPU使用時間
8.?查看當前線程棧上所有對象的信息,Dump stack objects
!dso
9.?查詢內(nèi)存中指定對象的信息 Dump object
!do
10.?查詢內(nèi)存中指定數(shù)組對象的信息 Dump Array
!da
11.?查看當前線程的堆棧和每行堆棧上的變量信息
!clrstack -a
12.?Windbg 附加進程調(diào)試,啟用CLR異常捕獲、查看異常、查看異常所在線程堆棧、禁用CLR異常調(diào)試、退出調(diào)試
sxe clr g !pe !clrstack sxd clr qd
13.?查看托管堆上內(nèi)存對象的分布、三個代的信息
!eeheap -gc
14.?查看托管堆上加載的Dll
!eeheap -loader
15.?什么是內(nèi)存對象代提升,垃圾回收中未回收的對象也稱為幸存者,并會被提升到下一代。通過代提升的情況,可以分析對象的存活時間
?
16.?查詢內(nèi)存中各類對象的總個數(shù)和總內(nèi)存占用
!dumpheap -stat
?17.?查詢內(nèi)存中大對象的個數(shù)和對象大小
!dumpheap -stat -mt -min 85000
18.?查看內(nèi)存的析構隊列的指令
!finalizequeue
19.?請輸入查看對象000000123557DFC0的gcroot的指令
!gcroot 000000123557DFC0
20.?查看線程阻塞的指令
!syncblk
21.?查看Dump中所有System.Net.Sockets.Socket對象統(tǒng)計信息的指令
!dumpheap -type System.Net.Sockets.Socket -stat
?
還有很多,同時Windbg還支持Mex擴展插件,可以參考我博客中的鏈接:
Windbg-Mex擴展使用總結 <https://www.cnblogs.com/tianqing/p/9369693.html>
?
接下來,我會以內(nèi)存泄露的場景,給大家分享Windbg分享的思路和方法。
?
周國慶
2018/10/28
熱門工具 換一換
感谢您访问我们的网站,您可能还对以下资源感兴趣:
调教肉文小说-国产成本人片免费av-空姐av种子无码-在线观看免费午夜视频-综合久久精品激情-国产成人丝袜视频在线观看软件-大芭区三区四区无码-啊啊好爽啊啊插啊用力啊啊-wanch视频网-国产精品成人a免费观看