記憶體洩露分析demo
gflags標誌設定好後,開啟cmd
鍵入要定位記憶體洩露的程式gflags.exe /i memroyleak.exe(程式名稱)+ust
如圖成功後,開啟memoryleak.exe程式
命令格式:umdh–pn:memoryleak.exe(程式名稱) –f:snap1.log(日誌名稱)
程式執行一段時間後或者程式占用記憶體增加時,將memoryleak.exe退出。
然後再次建立heap快照,命令列無差別,snap1.log改為snap2.log或者其他。
設定好程式的符號路徑,如下圖
設定好後可以開始分析heap前後兩個快照的差異
分析差異命令:umdh –d snap1.log snap2.log –f:result.txt
分析完成後檢視結果result.txt
紅色為umdh定位出來的洩**,我們在檢視源**
這樣我們就可以修改**中記憶體洩露的地方了。
開啟memoryleak.exe程式,windbg attach到該程序
命令:!heap –s檢視當前程序執行的所有堆的情況
然後f5讓程式執行一段時間或者記憶體有明顯的增加時再次通過!heap –s檢視當前堆的變化
如下圖通過對比前後兩個堆的變化,發現0x012800000該位址的堆增加的很快而其他堆沒什麼變化
下面進一步定位
命令:!heap –stat –h 檢視對應對的狀態,發下該堆的記憶體基本被長度為0x424的塊占用,接下來我們在堆中搜尋該程序中哪些模組占用0x424長度記憶體,如下圖
命令:!heap –flt s 424
通過搜尋程式記憶體中的堆發現長度為424的堆被大量的占用,進一步檢視時誰在使用這個位址
找到洩**了,紅色部分的,如果程式對應的符號對應我們可以檢視記憶體洩**在哪一行
記憶體洩露分析結束,如果你還有什麼好的方法可以共享
記憶體洩露分析
記憶體洩露分析demo gflags標誌設定好後,開啟cmd 鍵入要定位記憶體洩露的程式gflags.exe i memroyleak.exe 程式名稱 ust 如圖成功後,開啟memoryleak.exe程式 命令格式 umdh pn memoryleak.exe 程式名稱 f snap1.log...
Windows 記憶體洩露分析
記憶體洩露分析demo gflags標誌設定好後,開啟cmd 鍵入要定位記憶體洩露的程式gflags.exe i memroyleak.exe 程式名稱 ust 如圖成功後,開啟memoryleak.exe程式 命令格式 umdh pn memoryleak.exe 程式名稱 f snap1.log...
ext記憶體洩露分析1
記憶體釋放在使用ext開發opoa系統時顯得尤為重要 開始接觸ext開發,中間花了很多時間來解決記憶體洩漏。最開始ext還是3.0版,洩漏得一塌胡塗,也沒什麼處理頭緒,只知道在ondestroy裡加delete語句,用sieve看效果。而ext3.1有了乙個很大的進步,基本上絕大多數元件都沒有洩漏了...