記憶體洩露分析

2021-07-11 20:14:16 字數 1819 閱讀 1411

**  

記憶體洩露分析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有了乙個很大的進步,基本上絕大多數元件都沒有洩漏了...