Windows 記憶體洩露分析

2021-08-15 00:11:14 字數 1818 閱讀 1013

**:

記憶體洩露分析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...

記憶體洩露分析

記憶體洩露分析demo gflags標誌設定好後,開啟cmd 鍵入要定位記憶體洩露的程式gflags.exe i memroyleak.exe 程式名稱 ust 如圖成功後,開啟memoryleak.exe程式 命令格式 umdh pn memoryleak.exe 程式名稱 f snap1.log...

windows記憶體洩露檢測

vld visual leak detector 是一款用於 visual c 的免費記憶體洩露檢測工具。相比較其它記憶體洩露檢測工具,它在檢測到記憶體洩漏的同時,還具有如下特點 它是乙個已經打包的 lib,使用時無須編譯原始碼。對於使用者自己的 只需要做很小的改動 原始碼使用 gnu 許可發布,並...