阅读 76

Visual Leak Detector 在 VS 与 VC6.0 中使用总结

官网 VS 新官网

官网为原作者发布的网站,最新版本为1.9d,但包含已编译后的版本。1.0版本可用于vc6.0中。

新官网为后续维护者的网站,源码在github上,对vs2008&vs2010-vs2015支持较好。

VS中使用

注意:使用新官网中最新版本

  1. 直接安装vld-2.5.1-setup.exe,默认集成至vs中

image-20211108161314774.png2.  默认安装路径

C:\Program Files (x86)\Visual Leak Detector

  1. 代码中引入 #include<vld.h>

 #include "stdafx.h"
 #include<vld.h>                     //头文件
 #include<stdlib.h>
 #include<stdio.h>
 
 char* f()
 {
     char *p = new char;
     return p;
 }
 
 int main()
 {
     for (int i = 0; i < 100; i++)
         char *pBuf = f();
     return 0;
 }复制代码
  1. dbghelp.dll 及 vld.ini 拷贝至 .exe同级目录下

vld.ini配置文件路径:C:\Program Files (x86)\Visual Leak Detector\vld.ini

dbghelp.dll配置文件路径:C:\Program Files (x86)\Visual Leak Detector\bin

vld.ini 的几项配置说明:

VLD:选择VLD的打开与关闭。在Debug模式下运行,关闭以后会有一行VLD关闭的提示信息。默认为 on。

AggregateDuplicates:设置为 yes 时,相同地方产生内存泄漏只输出一次,但是会统计发生的次数。默认是 no 。

MaxDataDump:输出的dump数据个数,默认为 256。

MaxTraceFrames:输出的调用栈的层数。默认是 64。

ReportEncoding :report 文件的编码格式,可选有 ascii, unicode,默认是 ascii 。

ReportFile :report 文件的路径。默认是 “.\memory_leak_report.txt”

ReportTo :可选有 debugger, file, both,debugger 表示输出到 debug模式下的输出窗口;file 表示只输出到文件中; both顾名思义,全都都输出。默认是 debugger 。

  1. Debug下运行调试,在输出界面看到vld的内存检测信息

image-20211109092400116.png

  1. 在输出文件中查看vld的内存检测信息

image-20211109092533144.png

  1. 解决内存检测信息中无具体文件及行号提示

1)英文目录;

2)链接中调试文件生成模式;

image-20211108152213589.png

3)将vld安装目录中的dbghelp.dll文件拷贝至.exe同级目录下;

  1. 参考

1)vs中使用vld

VS内存泄漏工具Visual Leak Detector2.5.1安装与使用 - 云+社区 - 腾讯云 (tencent.com)

Visual Leak Detector(VLD)的使用_change_n的专栏-CSDN博客

2)vs中无法显示具体文件&行号的解决办法

在Visual Studio 2017使用Visual Leak Detector(vld)不显示行号的设置_kelvin_feng的专栏-CSDN博客

vld内存泄漏检查工具不能显示内存泄漏文件名与行号_flyky的专栏-程序员宝宝 - 程序员宝宝 (cxybb.com)

Visual Leak Detector(vld)无法显示内存泄露文件名与行号_mikasoi的博客-CSDN博客

Visual Leak Detector(vld)无法显示内存泄露文件名与行号 | 学步园 (xuebuyuan.com)

Visual Leak Detector(vld)无法显示内存泄露行号_总是天天说昨天的博客-CSDN博客

VC6.0中使用

注意:

1)使用1.0版本,可在原官网中下载。使用新官网最新版本无法定位文件名及行号;

2)使用1.0版本无法检测引用dll中的内存情况,需使用官网1.9d版本;

  1. 1.0中文件内容

image-20211109093302512.png2.  vc6.0中分别设置include及lib目录

image-20211109093355371.png

image-20211109093442935.png

备注:

一劳永逸的办法:(不用配置include及lib路径)

1)将lib文件全部拷贝到VC 6.0 或者是VS的目录下,一般的,VC6.0的lib的目录在:C:\Program Files\Microsoft Visual Studio\VC98\Lib

2)拷贝头文件(.h)文件到vc的include目录下,VC 6.0的Include目录在:C:\Program Files\Microsoft Visual Studio\VC98\Include

  1. vc代码中使用

 #include "stdafx.h"
 #include<vld.h>                 //头
 #include<vldapi.h>              //头
 
 int main(int argc, char* argv[])
 {
     int* a = new int();
     printf("Hello World!\n");
     return 0;
 }复制代码
  1. dbghelp.dll 及 vld.ini 拷贝至 .exe同级目录下,并配置vld.ini文件

  2. Debug下运行调试,在调试界面看到vld的内存检测信息

image-20211109094131271.png

  1. 在输出文件中查看vld的内存检测信息

image-20211109094216662.png

  1. 解决内存检测信息中无具体文件及行号提示

1)项目在纯英文路径;

2)使用1.0版本(已实测);

3)拷贝配套的dbghelp.dll至.exe同级目录;

  1. 参考

1)使用

Visual Leak Detector简明使用教程 - 车臣 - 博客园 (cnblogs.com)

  1. 备注:检测dll中的内存情况,使用高版本1.9d

1)手动引入inlcude与lib路径;

2)包含头#include <vld.h>;

3)vld.dll与dbghelp.dll拷贝至.exe统计目录;

image-20211109121029961.png


作者:菜鸟谢
链接:https://juejin.cn/post/7028382325872263198


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐