20240308-使用VS2022编译VLD-v2.5.4内存泄漏工具
一、软件环境
- Win10 x64 22h2 June
- VS2022 v17.9.0
- GIT v2.29.2
- 标签:win10 22h2 vs2022
- 分栏:C++
二、硬件环境
- Win10 x64的PC台式机
三、获取源码
方法一
git clone https://gitee.com/gdnh22/vld254.git
方法二
git clone https://github.com/hongxinGuo/vld.git
cd vld
git checkout 6e9b0603f77427970a82e273a65ae2b03ec1c8c1
本文库路径是【D:\github\vld】。
四、编译DLL
打开vld.sln文件,右键【批生成】,选择【VLD】【Release|x64】,点击生成;
成功后会显示生成路径;
至此编译全过程结束。
五、写DEMO调用VLD
写个简单的main函数:
// D:\gitee\gdnh22\gcceg\master\aa94
#include <iostream>
#include "vld.h"int main(int argc, char* argv[])
{int* p = new int[13]();int n(-1);int* p2 = new int[13]();int* p3 = new int();n = 0;return 0;
}
注意有问题的行号是【6】【8】【9】;
将VLD工程中src目录下的vld.h和vld_def.h拷贝过来,和main.cpp同级目录。
将vld/bin目录下的文件全部拷贝到exe所在目录,这里是【x64\Debug】
将刚才编译好的vld_x64.lib和vld_x64.dll拷贝到main.exe所在目录。
设置好库目录,然后F5运行main程序。
六、分析结果
运行结果如图,可见日志中显示出了内存未释放的具体行号:
全文完,2024-03-11 10:37:27。
七、遇到的错误
1、未能正确加载……
首次启动会弹出警告信息【未能正确加载……】,如图:
在显示为【未找到】的项目上右键移除即可,如图:
2、无法打开文件"vld.lib"
应该是编译失败未能生成vld.lib文件,尝试重新编译。
3、无法正常启动
报错如图:
可能是没有复制vld工程bin目录下的dbghelp.dll、vld.ini、Microsoft.Windows.DebuggersAndTools.manifest三个依赖文件。
4、无法检测DLL内存泄漏
测试过程中发现如果加载一个动态申请内存的DLL,但故意不调用释放接口,那么VLD检测不出来,所以对于DLL检测用VLD方式可能并不适用。
参考文献
- 《【Visual Leak Detector】在VS高版本中使用VLD》,木三百川,cnblogs。
更新历史
2024-03-08 10:04:10,创建,云杉路11号。
2024-03-11 10:37:50,完成初稿,准备发布CSDN。
2024-03-11 10:47:34,更新gitee地址。
2024-03-11 11:11:00,更新DLL测试说明。
2024-03-12 00:10:11,正式发布。
不发表的内容
无。