`
cutecoot
  • 浏览: 120553 次
  • 性别: 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可正常使用,暂未发现误报的问题

 

分享到:
评论

相关推荐

    windows下c++内存泄露检测工具使用方

    在 Windows 平台下进行 C++ 开发时,内存管理是一项非常重要的任务。由于 C++ 语言本身的特性,开发者需要手动管理内存分配与释放,这就很容易导致内存泄露的问题。内存泄露不仅会消耗系统资源,还可能导致程序性能...

    windows内存泄露检测工具之VLD

    在Windows操作系统中,内存泄漏是一种常见的程序错误,它发生在程序分配了内存但未能正确释放,导致系统资源逐渐耗尽。为了有效地检测和解决这类...如果你的项目中遇到内存泄漏的问题,不妨尝试使用VLD进行检测和修复。

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

    VLDD (Visual Leak Detector for Dynamics) 是一款针对Windows平台的开源C++内存泄漏检测工具,用于帮助开发者定位并解决内存管理中的问题。"vld2.1.zip" 压缩包提供了VLDD 2.1版本的源码、文档及相关库文件,便于在...

    VLD内存泄漏检测

    `vldmtdll.lib`和`vldmt.lib`可能是VLD的多线程版本的库文件,用于支持多线程环境下的内存泄漏检测。`vld.lib`可能是单线程版本或通用版本。根据你的项目需求,选择合适的库进行链接。 `readme.txt`文件提供了关于...

    QT Creator内存泄露检测VLD

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

    vld-10检查内存泄漏工具

    相比其他Windows内存泄漏检测工具,如LeakDiag、UMDH等,VLD-10在易用性和功能上具有一定的优势。 **最佳实践** 1. **早期检测**:在开发早期就引入内存泄漏检测工具,可以避免问题积累。 2. **持续测试**:定期...

    vld内存泄漏检测工具

    VLD(Visual Leak Detector)是一款针对Windows平台的开源内存泄漏检测工具,专门用于帮助C++开发者检测和定位程序中的内存泄漏问题。 VLD内存泄漏检测工具的工作原理基于动态链接库(DLL),在程序运行时注入到...

    vld检测 Qt内存泄露问题编译器一定要是MSVC。

    标题"vld检测 Qt内存泄露问题编译器一定要是MSVC"指出了使用VLD进行内存泄漏检测的前提条件,即你的开发环境应基于MSVC。这是因为VLD是专为Windows平台上使用MSVC编译器的应用程序设计的,它能够与MSVC的调试器紧密...

    vld1.0内存泄漏检测

    在Windows平台上,开发者常常使用`vld1.0`来帮助检测C++应用程序中的内存泄漏问题。 `vld1.9h-setup.exe`是`vld1.9`版本的安装程序,通常包含了`vld`库的所有必要组件,包括动态链接库(`.dll`)、头文件(`.h`)和...

    c++ vld 内存泄露检测

    为了帮助开发者有效地检测和定位C++程序中的内存泄漏问题,"c++ vld 内存泄露检测" 提供了一个简单易用的解决方案。 VLD,全称Visual Leak Detector,是一款为Visual C++编译器设计的开源内存泄漏检测工具。它通过...

    vld-1.9h-setup

    标题“vld-1.9h-setup”指的是Visual Leak Detector(VLD)的一个特定版本的安装程序,这个工具主要用于帮助开发者在使用Visual C++编译器进行Windows应用程序开发时检测内存泄漏。VLD是一个开源的内存泄漏检测工具...

    VLD内存泄露检测工具

    VLD,全称为Valgrind Leak Detector,是一款针对Windows平台的内存泄漏检测工具。它基于Valgrind,一个广泛用于Linux系统的内存错误检测框架,但针对Windows环境进行了优化。内存泄漏是程序运行过程中常见的问题,...

    内存泄露检测工具VLD(Visual Leak Detector)提取的头文件和库

    Visual Leak Detector(VLD)是一种专为Windows平台上使用Microsoft Visual C++编译器开发的应用程序设计的内存泄露检测工具。它通过动态链接库(DLL)的形式,在运行时检查并报告内存泄露情况,帮助开发者定位并...

    vld.rar_vld_vld内存检测_内存检测泄露工具

    VLD(Visual Leak Detector)是一款开源的、针对Windows平台的C++内存泄漏检测工具。它能够帮助开发者在程序运行时检测出内存泄露,尤其是在调试模式下效果显著。VLD的工作原理是在NEW和DELETE操作之间插入钩子函数...

    vld-2.5.1-setup.rar

    总的来说,Visual Leak Detector 2.5.1是Windows环境下进行C++开发的重要辅助工具,它可以帮助开发者及时发现并修复内存泄漏问题,提升软件质量和稳定性。通过简单的安装和直观的使用方式,VLD成为了每个Windows C++...

    Vld-10检查内存泄露工具

    `Vld-10`是一个专门针对这类问题的内存泄露检测工具,尤其适用于Visual C++(VC)开发环境。该工具能够帮助开发者定位并解决程序中的内存泄露问题,提高代码质量和程序稳定性。 `Vld-10`的使用主要包括以下几个关键...

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

    1. 下载并安装VLD,一般下载的是名为vld-x.x.zip的压缩包,例如这里的vld-10。 2. 解压压缩包,将包含的.lib和.dll文件添加到项目中相应的位置。 3. 在源代码中包含`#include <vld.h>`,确保在任何内存分配发生之前...

    VLD内存泄漏检测工具

    5. **与其他Valgrind工具集成:** 除了内存泄漏检测,VLD还可以与其他Valgrind工具(如Memcheck、Helgrind等)结合使用,进行更全面的性能分析。 **VLD的使用技巧和注意事项:** 1. **编译模式:** 为了得到最准确...

    内存泄露工具.rar

    本资源是“内存泄露工具”,具体版本为vld-2.5.1-setup,是一款用于检测内存泄漏的专业工具。 VLD,全称为Visual Leak Detector,是一款开源的、针对Windows平台的C++内存泄漏检测工具。它集成在Visual Studio中,...

Global site tag (gtag.js) - Google Analytics