VS2017 + Visual Leak Detector 内存泄漏排查(VLD内存泄漏排查)
VS2017 + Visual Leak Detector (官方说只支持2013-2015这里手动改了一些操作);
参考blog连接:
https://www.cnblogs.com/LinTeX9527/p/11127319.html
https://blog.csdn.net/WU9797/article/details/103302755
VLD 2.5.1官方下载链接:
https://objects.githubusercontent.com/github-production-release-asset-2e65be/566097/583de30e-b359-11e7-99d7-0f1fb50d7654?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220516%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220516T070534Z&X-Amz-Expires=300&X-Amz-Signature=6a1aced3896b7802a4a1954885fba45c7cc4f762e5b5ed581f0f3457d3fce448&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=566097&response-content-disposition=attachment%3B%20filename%3Dvld-2.5.1-setup.exe&response-content-type=application%2Foctet-stream
1、所有项目的sdk都要替换,原来2015也要全都替换成2017
2、工程 libgtest 增加这个宏定义:
定义宏 _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
libgtest 的属性设置界面,C++-->Precoessor-->Processor Definitions
中添加一个宏定义: _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
3、Not supported VS
上一步编译之后提示如下,跳转到对应的源文件 vld.cpp
第 976 行:
VS2017 是1916
#if _MSC_VER > 1916
#error Not supported VS
#endif
4、需要测试的exe目录下放入一下几个二进制文件:
测试代码:
#include <iostream>
#include <windows.h>
#include "vld.h"
char* f()
{
char *p = new char;
return p;
}
int main()
{
for (int i = 0; i < 10; i++)
char *pBuf = f();
std::cout << "Hello World!\n";
system("pause");
return 0;
}
具体输出:如果没有打印行号的话,在需要调试的二进制项目中开启debug:full
具体内存泄漏例子输出:
其他:
vld.ini 配置文件 未做修改。
注意不要在调试模式下进行内存泄漏排查,会产生crash在这个dbghelp.dll。只能在debug模式下进行内存泄漏分析。