Visual LeakDetector(VLD)使用

转载 2016年06月02日 10:51:33

Visual LeakDetector(VLD)是一款用于Visual C++的免费的内存泄露检测工具。它的特点有:(1)、它是免费开源的,采用LGPL协议;(2)、它可以得到内存泄露点的调用堆栈,可以获取到所在文件及行号;(3)、它可以得到泄露内存的完整数据;(4)、它可以设置内存泄露报告的级别。

         默认情况下,只有在Debug模式下才会启用VLD的功能。

         在使用的时候只要将VLD的头文件和lib文件放在工程文件中即可。

         在需要检测内存泄露的源文件中添加#include “vld.h”

         VLD只能在Windows下使用,它应用在C/C++语言中。

         通过修改vld.ini文件(ReportFile选项),可以设置内存泄露报告的保存位置。

         VLD好像对中文路径不支持。

         VLD的各个版本对应适用于不同的VC/VS编译器,注意选择合适的版本。

 

1.        从http://vld.codeplex.com/SourceControl/latest#README.md下载最新源代码,解压缩,里面包含有源码、vs2010工程配置、以及一些依赖库,如dbghelp等;

2.          打开vld_vs10.sln,在32位/64位下,分别编译debug和release下vld工程,会在当前目录下生成bin文件夹,里面包含相应的库文件;

3.          新建控制台工程VLDtest,在Debug下运行,代码如下:

stdafx.cpp:

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #include "stdafx.h"  
  2.   
  3. #ifdef _DEBUG  
  4.     #pragma comment(lib, "../../../src/VLD/bin/Win32/Debug/vld.lib")  
  5. #else  
  6.     //#pragma comment(lib, "../../../src/VLD/bin/Win32/Release/vld.lib")  
  7. #endif  
VLDtest.cpp:

[cpp] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. #include "stdafx.h"  
  2. #include "../../src/VLD/vld.h"  
  3. #include <iostream>  
  4.   
  5. using namespace std;  
  6.   
  7. void fun()  
  8. {  
  9.     char* tmp = new char[10];  
  10.     memset(tmp, 0, 10);  
  11. }  
  12.   
  13. int main(int argc, char* argv[])  
  14. {  
  15.     fun();  
  16.   
  17.     cout<<"ok!"<<endl;  
  18.   
  19.     return 0;  
  20. }  

4.          运行提示,“无法启动此程序,因为计算机中丢失vld_x86.dll”,解决方法,将bin/Win32/Debug/vld_x86.dll拷贝到VLDtest执行目录下或将vld_x86.dll路径添加到系统环境变量中;

5.          运行提示,“应用程序无法正常启动(0xc0150002)”,将源代码中的/setup/dbghelp/x86文件夹下的dbghelp.dll和Microsoft.DTfW.DHL.manifest两个文件拷贝到VLDtest执行目录下即可;

6.          直接按F5运行,可以在Output窗口显示内存泄漏的相关信息,包括发生内存泄漏的文件名和行号,双击即可定位到内存泄漏的具体位置;

7.          或者直接运行,相关信息可以显示在命令行窗口中;

8.        也可将内存泄漏信息写入文件中,将源代码中的vld.ini文件拷贝到VLDtest工程目录下,即与VLDtest.vcxproj同目录,修改vld.ini文件中的选项参数,ReportFile = .\../../../lib/dbg/x86_vc10/memory_leak_report.txt,ReportTo =both(原始ReportTo = debugger),重新运行后,会在执行目录下生成一个memory_leak_report.txt文件;或者将vld.ini文件拷贝到执行目录下,运行VLDtest[dbg_x86_vc10].exe文件也可生成报告文件;

9.          在Release下运行,VLD不起作用,VLDtest工程不用作任何配置和调整;

10.  也可不用编译源代码,直接从http://vld.codeplex.com/releases下载,然后安装即可,里面包含需要的库和头文件。

图中为运行测试代码时显示的内存泄漏信息:


GitHubhttps://github.com/fengbingchun/Messy_Test

1

Visual Leak Detector(VLD)1.9d

  • 2010年11月15日 12:03
  • 773KB
  • 下载

Visual C++内存泄露检测工具(VLD)

简述C/C++ 程序越复杂,内存的管理显得越重要,稍有不慎就会出现泄漏。如果内存泄漏不是很严重,在短时间内对程序不会有太大影响,这也使得内存泄漏问题有很强的隐蔽性,不易被发现。然而不管内存泄漏多么轻微...
  • u011012932
  • u011012932
  • 2016年10月11日 17:42
  • 3126

Windows 7 下 vs2010内存泄漏检测工具VLD的使用

1 环境和软件    Windows7 32位系统    Visual Studio 2012 旗舰版    vld-2.2.3-setup.exe  大小1.04M ...
  • yanghai112
  • yanghai112
  • 2016年11月17日 19:51
  • 1353

vld2.2.3内存泄漏检查工具

  • 2016年09月20日 08:29
  • 1.04MB
  • 下载

vc++多线程随机单元测试实例之测试vld库

//////////////////////////////////////////////////////////////////////////////// // // Visual Leak ...
  • earbao
  • earbao
  • 2016年08月29日 11:34
  • 563

Visual C++内存泄露检测—VLD工具使用说明d

转自:http://www.cnblogs.com/lidabo/archive/2012/07/19/2599745.html http://www.cnblogs.com/lancidie/arc...
  • azhou_hui
  • azhou_hui
  • 2013年06月19日 18:22
  • 5465

VLD(Visual LeakDetector)内存泄露库的使用

VLD简介 由于C/C++语言没有所谓的垃圾收集器,内存的分配和释放都需要程序员自己来控制,这会给C/C++程序员带来一定的困难。当您的程序越来越复杂时,它的内存管理也会变得越来越困难。内存泄漏...
  • fan_hai_ping
  • fan_hai_ping
  • 2012年09月27日 08:09
  • 35238

内存泄漏检测工具VLD在VS2010中的使用举例

内存泄漏检测工具VLD在VS2010中的使用举例!
  • fengbingchun
  • fengbingchun
  • 2015年03月11日 11:08
  • 16829

VLD(Visual LeakDetector)内存泄露库的使用

VLD简介 由于C/C++语言没有所谓的垃圾收集器,内存的分配和释放都需要程序员自己来控制,这会给C/C++程序员带来一定的困难。当您的程序越来越复杂时,它的内存管理也会变得越来越困难。内存泄漏...
  • qing666888
  • qing666888
  • 2016年01月12日 14:51
  • 699

控制台和MFC中内存泄露工具vld的使用

坑位
  • alex_my
  • alex_my
  • 2013年09月09日 19:12
  • 5813
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Visual LeakDetector(VLD)使用
举报原因:
原因补充:

(最多只允许输入30个字)