使用VLD進行記憶體洩漏檢測(release + debug)
VLD(Visual Leak Detector)是一款用於VisualC++的免費記憶體洩漏檢查工具。功能:
1) 可以得到記憶體洩漏點的呼叫堆疊,還可以得到其所在的檔案及行號;
2) 可以得到洩漏記憶體的完整資料;
3) 惡意設定記憶體洩漏報告的級別;
4) 它以動態庫的形式提供,無需編譯原始碼,只需要很小的改動程式;
5) 原始碼使用GNU許可釋出,並有詳細的文件及其註釋。
VLD網址:http://vld.codeplex.com/
使用方法:
debug:在自己的工程中任意的原始檔中包含<vld.h>即可,編譯完的可執行程式並帶有VLD內在檢測功能
release:
1,同Debug版本在VC中配置好VLD的相關資訊
2, 拷貝Visual Leak Detector\bin\Win32目錄下所有的檔案和vld.ini到工程目標路徑下
3,在程式入口處的cpp中,定義強制檢測巨集和包含vld標頭檔案
#define VLD_FORCE_ENABLE
#include "vld.h"
4,在程式啟動和退出時,分別增加以下函式呼叫
{
...
VLDGlobalEnable();
VLDReportLeaks();
//some code...
VLDGlobalDisable();
}
5,增加別的檢測模組
以上配置後,預設情況下只會檢測主程式的模組,要想增加其他模組的記憶體洩露檢測,需要配置vld.ini檔案中的 ForceIncludeModules,多個模組用";"分隔,如:ForceIncludeModules = demo1.dll;demo2.dll
6,配置輸出方式
預設只會在除錯下的終端中列印記憶體洩露資訊,可配置vld.ini檔案中的ReportTo為both,這樣可以同時想終端和檔案中打 印資訊,如:ReportTo = both
關於VLD的配置檔案:
Vld的庫會檢查程式所執行的當前目錄是否存在vld.ini的配置檔案,如果有,則載入裡頭的配置進行記憶體檢測執行,如果沒有取預設的配置引數執行,我們可以手動將vld.ini的檔案拷貝到程式的執行目錄中即可。
關於vld.ini的幾個注意的引數:
1,VLD = on 總開關,是否啟用VLD功能,預設為yes
2,MaxDataDump = 256 用來顯示檢測到的內在洩露的塊的地址大小,預設256,其實就是顯示多少個byte的內容。
3,MaxTraceFrames = 64 設定VLD檢測到堆疊的最大層極,也就是frame的深度
4,ReportFile = xxx 設定VLD生成報告的位置和報告的檔名,預設為:.\memory_leak_report.txt,程式當前執行目錄中。
5,ReportTo = debugger 設定VLD生成報告的方式,debugger為在控制檯輸出VLD的報告資訊,file在指定目錄下生成報告檔案,both為即輸出也生成報告。如果你的程式為帶窗體的程式,需要設定為file或both.
相關文章
- iOS檢測記憶體洩漏iOS記憶體
- 如何在 Linux 下檢測記憶體洩漏Linux記憶體
- Android記憶體洩漏檢測與修復技巧Android記憶體
- 分析記憶體洩漏和goroutine洩漏記憶體Go
- C++--問題27--如何檢測記憶體洩漏C++記憶體
- js記憶體洩漏JS記憶體
- Android記憶體洩漏Android記憶體
- Android 記憶體洩漏Android記憶體
- jvm 記憶體洩漏JVM記憶體
- Java記憶體洩漏Java記憶體
- vue使用中的記憶體洩漏Vue記憶體
- 如何檢查Javascript中的記憶體洩漏JavaScript記憶體
- Handler的使用、記憶體洩漏和解決記憶體
- 記憶體洩漏定位工具之 valgrind 使用記憶體
- 在 ArkTS 中,如何有效地進行記憶體管理和避免記憶體洩漏?記憶體
- 記憶體洩漏的原因記憶體
- valgrind 記憶體洩漏分析記憶體
- Android 記憶體洩漏檢測工具 LeakCanary(Kotlin版)的實現原理Android記憶體Kotlin
- 【記憶體洩漏和記憶體溢位】JavaScript之深入淺出理解記憶體洩漏和記憶體溢位記憶體溢位JavaScript
- JVM——記憶體洩漏與記憶體溢位JVM記憶體溢位
- 軟體測試學習教程——過載new或delete來檢測記憶體洩漏delete記憶體
- 這可能是,Flutter 中最“強悍”的記憶體洩漏檢測方案......Flutter記憶體
- Node.js 應用的記憶體洩漏問題的檢測方法Node.js記憶體
- Android記憶體洩漏場景Android記憶體
- ThreadLocal記憶體洩漏問題thread記憶體
- PHP 記憶體洩漏分析定位PHP記憶體
- 記憶體洩漏除錯工具記憶體除錯
- ThreadLocal真會記憶體洩漏?thread記憶體
- WebView引起的記憶體洩漏WebView記憶體
- Perfdog 玩轉記憶體洩漏記憶體
- JavaScript之記憶體洩漏【四】JavaScript記憶體
- .Net程式記憶體洩漏解析記憶體
- 記憶體的分配與釋放,記憶體洩漏記憶體
- 1.記憶體優化(一)記憶體洩漏記憶體優化
- JavaScript之記憶體溢位和記憶體洩漏JavaScript記憶體溢位
- 記一次使用 laravel-s 記憶體洩漏Laravel記憶體
- 基於Android Studio的記憶體洩漏檢測與解決全攻略Android記憶體
- Android中使用Handler為何造成記憶體洩漏?Android記憶體