使用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.

猜你喜欢

转载自blog.csdn.net/xiaomucgwlmx/article/details/87630671
今日推荐