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模式下进行内存泄漏分析。

posted on 2022-05-17 18:12  流若浅  阅读(835)  评论(0编辑  收藏  举报

导航