`
cutecoot
  • 浏览: 117815 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Windows下进行内存泄漏检测--VLD

阅读更多

 

 

 

 

Windows下的应用程序在做内存泄漏测试时,无需重新编译的检测工具很少,只有(DR. Memory, UMDH等)少数软件,而且提示较不明确。而VLD(Visual LeakDetector)虽然需要重新编译,但是仅需增加一个include文件,且仅在debug模式下工作,对项目影响较小,可以考虑。

Visual Leak Detector is a free, robust, open-source memory leak detection system for Visual C++.

下面说说VLD的特点:

1) 可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在的文件及行号;

2) 可以得到泄漏内存的完整数据;

3) 可以设置内存泄漏报告的级别;

4) 它以动态库的形式提供,无需编译源代码,只需要很小的改动程序;

5) 源代码使用GNU许可发布,并有详细的文档及其注释

与VS自带的工具比较:The main difference between the CRT Debug Library and VLD, is that Visual Leak Detector shows you the complete callstack used for memory allocation has led to the leak.

分步指南

  1. 获取VLD
    1. 从项目官方网站获取:项目主页:http://vld.codeplex.com/
    2. 从Visual Studio的扩展和更新中,搜索VLD。可以找到Visual Leak Detector for Visual C++。
  2. 下载vld-2.5.1-setup.exe(当前的最新版)并安装,在安装过程中会出现
    这里写图片描述
    默认是全部勾选的,直接Next至Finish。和以前的版本不一样,vld会将自己配置在VS上,所以我们现在不用再对自己的项目进行进行对vld的include头文件和library库文件的添加配置,我们需要用的时候只需要添加头文件:#include “vld.h” 即可。
  3. 新建工程, 打开项目属性, 就可以看到: (如果是已有项目,需自行添加引用的vld头文件目录)
    这里写图片描述
  4. 新建源文件,文件名随便起一个: *.cpp ,在源文件中引用“include "vld.h"”即可。

    #ifdef _DEBUG

    #include "vld.h"

    #endif


    这里写图片描述
  5. 选择Debug模式,运行:
    这里写图片描述
  6. 结束程序后这样从debugger就可以知道程序中那里出现了内存泄漏了,上图我们可以看到问题出现在哪个文件以及哪一行。
  7. 如果不依赖IDE,则需要修改VLD的默认设置,让输出同时可以记录到文件中
  8. 修改vld安装目录下的vld.ini

    vld配置文件
    ReportFile = memory_leak_report.txt
    ReportTo = both
  9. 保证程序执行目录中同时保存有pdb文件
  10. 运行debug版程序后,同目录会生成vld输出文件,以供查看

 

注意:
1. 仅支持Visual Studio 2008-2015
2. VLD 内存检测工具,只能检测使用VC++编译器,不能用于检测MinGW编译器。所以如果使用跨平台的IDE如QT,请注意使用VLD时选择VC++编译器。
3. 仅工作在debug模式
4. 若程序包含多个dll,则每个dll都需要有至少一个C/C++文件包含 vld.h
5. QT可正常使用,暂未发现误报的问题

 

分享到:
评论

相关推荐

    vld2.1.zip windows下cpp内存泄露检测

    vld2.1.zip windows下cpp内存泄露检测,vld2.1.zip windows下cpp内存泄露检测

    windows内存泄露检测工具之VLD

    windows内存泄露检测,VLD(Visual Leak Detector)是一款用于 Visual C++ 的免费内存泄露检测工具。内寸泄露检测神器。

    QT Creator内存泄露检测VLD

    windows下Qt creator 使用 VLD 工具的方法,下载 安装 使用 用浏览器打开

    vld(Visual Leak Detector 内存泄露检测工具 源码)

    相比较其它的内存泄露检测工具,它在检测到内存泄漏的同时,还具有如下特点:  1、 可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号;  2、 可以得到泄露内存的完整数据;  3、 可以...

    Visual Leak Detector(VLD)内存泄漏检测工具

    相比较其它的内存泄露检测工具,它在检测到内存泄漏的同时,还具有如下特点: 1、 可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号; 2、 可以得到泄露内存的完整数据; 3、 可以设置内存...

    vld-2.5.1-setup.rar

    visual leak detector ,安装包

    VLD(Visual Leak Detector) 2.5.1.rar

    VLD(Visual Leak Detector) 2.5.1 c++ windows 内存泄漏检测

    C++程序内存泄漏检测方法

     注意:我们的分析前提是Release版本,因为在Debug环境下,通过VLD这个库或者CRT库本身的内存泄漏检测函数能够分析出内存泄漏,相对而言比较简单。而服务器有很多问题需要在线上并发压力情况下才出现,因此讨论...

    Visual Leak Detector(VLD)1.9d

    相比较其它的内存泄露检测工具,它在检测到内存泄漏的同时,还具有如下特点: 1、 可以得到内存泄漏点的调用堆栈,如果可以的话,还可以得到其所在文件及行号; 2、 可以得到泄露内存的完整数据; 3、 可以设置...

    C++程序检测内存泄漏的方法分享

    注意:我们的分析前提是Release版本,因为在Debug环境下,通过VLD这个库或者CRT库本身的内存泄漏检测函数能够分析出内存泄漏,相对而言比较简单。而服务器有很多问题需要在线上并发压力情况下才出现,因此讨论Debug...

    VisualStudio 使用Visual Leak Detector检查内存泄漏

    那么在Windows下有什么好的内存泄漏检测工具呢?微软提供Visual Studio开发工具本身没有什么太好的内存泄漏检测功能,我们可以使用第三方工具Visual Leak Detector(以下简称vld)。 vld工具是VC++环境下一款小巧...

    VLD安装包.rar

    检查内存泄漏不错的直接安装软件,免去拷贝直接安装,适用于Vs C++开发环境,windows操作系统, 主要优点就是免去加载拷贝,直接检测环境安装!

    Visual Leak Detector

    Windows 下最简单实用的内存泄露检测工具。

    Visual Leak Detector 2.2.3 免安装.rar

    Visual Leak Detector 2.2.3 版 免安装 解压即可使用。 内有说明。 可在mangos-0.9.0中使用。 在VS2010中 需要在“common.h”中把包含“vld.h”的 "MemoryLeaks.h"放到“windows.h”后。

    vc++ 开发实例源码包

    检查内存泄漏源码 DigiStatic_src 自绘CStatic实现数字效果。 DirectShow开发指南pdf附属代码 如题。 DirectShow开发指南源码 如题。 directUI_D DirectUI界面库 DOM应用---遍历网页中的元素 如题。 ...

    vc++ 应用源码包_1

    检查内存泄漏源码 DigiStatic_src 自绘CStatic实现数字效果。 DirectShow开发指南pdf附属代码 DirectShow开发指南源码 directUI_D DirectUI界面库 DOM应用---遍历网页中的元素 dshowplayer 媒体播放器的实现,...

    vc++ 应用源码包_2

    检查内存泄漏源码 DigiStatic_src 自绘CStatic实现数字效果。 DirectShow开发指南pdf附属代码 DirectShow开发指南源码 directUI_D DirectUI界面库 DOM应用---遍历网页中的元素 dshowplayer 媒体播放器的实现,...

    vc++ 应用源码包_6

    检查内存泄漏源码 DigiStatic_src 自绘CStatic实现数字效果。 DirectShow开发指南pdf附属代码 DirectShow开发指南源码 directUI_D DirectUI界面库 DOM应用---遍历网页中的元素 dshowplayer 媒体播放器的实现,...

    vc++ 应用源码包_5

    检查内存泄漏源码 DigiStatic_src 自绘CStatic实现数字效果。 DirectShow开发指南pdf附属代码 DirectShow开发指南源码 directUI_D DirectUI界面库 DOM应用---遍历网页中的元素 dshowplayer 媒体播放器的实现,...

    vc++ 应用源码包_3

    检查内存泄漏源码 DigiStatic_src 自绘CStatic实现数字效果。 DirectShow开发指南pdf附属代码 DirectShow开发指南源码 directUI_D DirectUI界面库 DOM应用---遍历网页中的元素 dshowplayer 媒体播放器的实现,...

Global site tag (gtag.js) - Google Analytics