Below you will find pages that utilize the taxonomy term “WinDBG”
Posts
WinDBG - Check gcroot
如果檢查出該被回收的物件並為如預期的被回收,這邊可以看一下物件的 gcroot,看看物件是為何被佔住而不能釋放。
像是這邊如果用 !dumpheap –stat 查看發現 7ff5e8859b0 MT 位置的物件有問題,這邊可以調用命令 !dumpheap -mt 7ff5e8859b0,查看其對應到的 Address。
0:000> !dumpheap -mt 7ff5e8859b0 The version of SOS does not match the version of CLR you are debugging. Please load the matching version of SOS for the version of CLR you are debugging. CLR Version: 4.0.30319.17929 SOS Version: 4.5.27.0 Address MT Size 000000865eca7860 000007ff5e8859b0 120 Statistics: MT Count TotalSize Class Name 000007ff5e8859b0 1 120 AgileSlot.Core.GameMachine Total 1 objects Fragmented blocks larger than 0.
read morePosts
WinDBG - Check memory leak with dumpheap
要檢查程式的 Memory leak,我們可以在程式物件應該被釋放時抓取 Dump 檔案,像是程式運行後隔一陣子,理論上 GC 應該已經將物件回收時抓取,抓取後就可以用 WinDBG 進一步的分析。
分析時將 WinDBG 開啟,點選 [File | Symbol File Path…] 。
{% img /images/posts/CheckMemoryLeakWithWinDBG/1.png %}
將 Symbol Server 的位置加入(SRVc:\symbolshttp://msdl.microsoft.com/download/symbols) 。
{% img /images/posts/CheckMemoryLeakWithWinDBG/2.png %}
接著點選 [File | Open Crash Dump…] 載入 Dump File ( 直接將 Dump 檔拖曳至 WinDBG 也可 )。
{% img /images/posts/CheckMemoryLeakWithWinDBG/3.png %}
{% img /images/posts/CheckMemoryLeakWithWinDBG/4.png %}
接著輸入命令 .loadby sos clr,將 SOS 偵錯擴充功能載入。
{% img /images/posts/CheckMemoryLeakWithWinDBG/5.png %}
再輸入命令 !dumpheap –stat 將 heap state dump 出來。
read more