【Visual Leak Detector】源码编译 VLD 库
说明
使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍 VLD 源码的编译。同系列文章目录可见 《内存泄漏检测工具》目录
1. VLD 库的依赖文件
以 vld2.5.1
版本为例,下载源码 后,源码包中各文件的用途可看本人另一篇博客 【VLD】源码文件概览。使用 vld2.5.1-setup.exe 安装 VLD
时(可参考 【VLD】安装 VLD),安装目录结构如下:
D:\Program Files (x86)\Visual Leak Detector
│ AUTHORS.txt
│ CHANGES.txt
│ COPYING.txt
│ unins000.dat
│ unins000.exe
│ vld.ini
│
├─bin
│ ├─Win32
│ │ dbghelp.dll
│ │ Microsoft.DTfW.DHL.manifest
│ │ vld_x86.dll
│ │ vld_x86.pdb
│ │
│ └─Win64
│ dbghelp.dll
│ Microsoft.DTfW.DHL.manifest
│ vld_x64.dll
│ vld_x64.pdb
│
├─include
│ vld.h
│ vld_def.h
│
└─lib
├─Win32
│ vld.lib
│
└─Win64
vld.lib
除了 unins000.dat
与 unins000.exe
外,一共 16
个文件。查看源码包中的文件 .\setup\vld-setup.iss 第 44~59 行,可知这 16
个文件的来源:
[Files]
Source: "dbghelp\x64\dbghelp.dll"; DestDir: "{app}\bin\Win64"; Flags: ignoreversion
Source: "dbghelp\x64\Microsoft.DTfW.DHL.manifest"; DestDir: "{app}\bin\Win64"; Flags: ignoreversion
Source: "dbghelp\x86\dbghelp.dll"; DestDir: "{app}\bin\Win32"; Flags: ignoreversion
Source: "dbghelp\x86\Microsoft.DTfW.DHL.manifest"; DestDir: "{app}\bin\Win32"; Flags: ignoreversion
Source: "..\src\bin\Win32\Release-v140\vld.lib"; DestDir: "{app}\lib\Win32"; Flags: ignoreversion
Source: "..\src\bin\Win32\Release-v140\vld_x86.dll"; DestDir: "{app}\bin\Win32"; Flags: ignoreversion
Source: "..\src\bin\Win32\Release-v140\vld_x86.pdb"; DestDir: "{app}\bin\Win32"; Flags: ignoreversion
Source: "..\src\bin\x64\Release-v140\vld.lib"; DestDir: "{app}\lib\Win64"; Flags: ignoreversion
Source: "..\src\bin\x64\Release-v140\vld_x64.dll"; DestDir: "{app}\bin\Win64"; Flags: ignoreversion
Source: "..\src\bin\x64\Release-v140\vld_x64.pdb"; DestDir: "{app}\bin\Win64"; Flags: ignoreversion
Source: "..\src\vld.h"; DestDir: "{app}\include"; Flags: ignoreversion
Source: "..\src\vld_def.h"; DestDir: "{app}\include"; Flags: ignoreversion
Source: "..\vld.ini"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\AUTHORS.txt"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\CHANGES.txt"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\COPYING.txt"; DestDir: "{app}"; Flags: ignoreversion
- 【文件 1】安装目录文件
AUTHORS.txt
来自于源码根目录下同名文件。 - 【文件 2】安装目录文件
CHANGES.txt
来自于源码根目录下同名文件。 - 【文件 3】安装目录文件
COPYING.txt
来自于源码根目录下同名文件。 - 【文件 4】安装目录文件
vld.ini
来自于源码根目录下同名文件。 - 【文件 5】安装目录文件
.\include\vld.h
来自于源码目录.\src
下同名文件。 - 【文件 6】安装目录文件
.\include\vld_def.h
来自于源码目录.\src
下同名文件。 - 【文件 7】安装目录文件
.\bin\Win64\dbghelp.dll
来自于源码目录.\setup\dbghelp\x64
下同名文件。 - 【文件 8】安装目录文件
.\bin\Win64\Microsoft.DTfW.DHL.manifest
来自于源码目录.\setup\dbghelp\x64
下同名文件。 - 【文件 9】安装目录文件
.\bin\Win32\dbghelp.dll
来自于源码目录.\setup\dbghelp\x86
下同名文件。 - 【文件 10】安装目录文件
.\bin\Win32\Microsoft.DTfW.DHL.manifest
来自于源码目录.\setup\dbghelp\x86
下同名文件。 - 【文件 11】安装目录文件
.\bin\Win64\vld_x64.dll
由Visual Studio 2015
的Release
、x64
模式编译源码生成。 - 【文件 12】安装目录文件
.\bin\Win64\vld_x64.pdb
由Visual Studio 2015
的Release
、x64
模式编译源码生成。 - 【文件 13】安装目录文件
.\lib\Win64\vld.lib
由Visual Studio 2015
的Release
、x64
模式编译源码生成。 - 【文件 14】安装目录文件
.\bin\Win32\vld_x86.dll
由Visual Studio 2015
的Release
、Win32
模式编译源码生成。 - 【文件 15】安装目录文件
.\bin\Win32\vld_x86.pdb
由Visual Studio 2015
的Release
、Win32
模式编译源码生成。 - 【文件 16】安装目录文件
.\lib\Win32\vld.lib
由Visual Studio 2015
的Release
、Win32
模式编译源码生成。
2. 源码编译生成 VLD 库
使用 Visual Studio 2015
打开源码根目录下的 vld_vs14.sln
或者 vld_vs14_wo_mfc.sln
,当仅用于生成 VLD
库时,这两个解决方案的生成结果是一样的,详见本人另一篇博客 【VLD】源码文件概览。打开后,下拉构建配置框,可以看到有 6
种配置可供选择:Debug
、Debug_StaticCrt
、Debug_VldRelease
、Debug_VldRelease_StaticCrt
、Release
、Release_StaticCrt
,他们的区别在于链接的运行库版本不同(详见 项目属性 -> C/C++ -> 代码生成 -> 运行库),以及是否启用优化。
打开 配置管理器,下拉查看不同的 活动解决方案配置,发现除 Debug
、Debug_StaticCrt
模式外,其余 4
种配置下 vld
的配置都为 Release
。因此解决方案的配置选项选择除 Debug
、Debug_StaticCrt
外的 4
种都可以,不妨选择 Release
。
按下图步骤操作,生成 Win32
平台下的 VLD
库及 pdb
文件。
同样地,按下图步骤操作,生成 Win64
平台下的 VLD
库及 pdb
文件。
在生成目录 .\src\bin\Win32\Release-v140
下可以找到对应的 3
个文件:
同样地,在生成目录 .\src\bin\x64\Release-v140
下可以找到 Win64
平台的 3
个文件:
至此,VLD
安装目录下的 16
个文件已经全部具备,可以开始使用了。
3. 配置环境变量
由于没有使用 vld2.5.1-setup.exe 安装器,环境变量还需要自己来手动配置,将以上 16
个文件整理到一个目录下,最好依据前面的安装目录结构来进行整理,然后手动修改系统变量 Path
,增加对应的 Win32
版本路径与 Win64
版本路径,例如:
D:\Program Files (x86)\Visual Leak Detector\bin\Win32
D:\Program Files (x86)\Visual Leak Detector\bin\Win64
4. 使用 VLD 库
VLD
库的使用方式可参考本人同系列文章:
- 在 VS 2015 中使用 VLD。
- 在 QT 中使用 VLD(方式一)。这一种使用方式的缺点是,当把项目拷贝到别的电脑上编译运行时,需要按特定流程重新配置 VLD 环境。但优点是在一台电脑上配置完成后,用的时候十分方便,包含头文件就可以使用,不需添加任何多余的代码。
- 在 QT 中使用 VLD(方式二)。这一种使用方式的特点是,在一台电脑上安装完成后,需在项目
pro
文件中指明库及头文件的路径,然后在mian.cpp
文件中#include "vld.h"
。当把项目拷贝到别的电脑上编译运行时,需要确保该电脑已经具备了 VLD 环境,并更改项目pro
文件中指明的相关路径。 - 在 QT 中使用 VLD(方式三)。这一种使用方式的特点是,在一台电脑上安装完成后,将 VLD 安装目录下的 lib 库及 include 文件拷贝到项目目录中,在项目
pro
文件中指明库及头文件的路径,并将vld.ini
文件和 VLD 安装目录 bin 文件夹下的全部文件拷贝到项目生成目录下,最后在mian.cpp
文件中#include "vld.h"
。优点是,当把项目拷贝到别的电脑上编译运行时,该电脑无需安装 VLD,也不需要更改任何代码。
【Visual Leak Detector】源码编译 VLD 库的更多相关文章
- linux下JUCE源码编译依赖库
JUCE 源码https://github.com/julianstorer/JUCE 想在ubuntu下编译需要提前安装以下依赖库 sudo apt-get install mesa-common- ...
- Ubuntu 16.04源码编译boost库 编写CMakeLists.txt | compile boost 1.66.0 from source on ubuntu 16.04
本文首发于个人博客https://kezunlin.me/post/d5d4a460/,欢迎阅读! compile boost 1.66.0 from source on ubuntu 16.04 G ...
- Cocos开发中性能优化工具介绍之Visual Studio内存泄漏检测工具——Visual Leak Detector
那么在Windows下有什么好的内存泄漏检测工具呢?微软提供Visual Studio开发工具本身没有什么太好的内存泄漏检测功能,我们可以使用第三方工具Visual Leak Detector(以下简 ...
- Cocos性能优化工具的开发介绍Visual Studio内存泄漏检测工具——Visual Leak Detector
然后,Windows下有什么好的内存泄漏检測工具呢?微软提供Visual Studio开发工具本身没有什么太好的内存泄漏检測功能.我们能够使用第三方工具Visual Leak Detector(下面简 ...
- VisualStudio 怎么使用Visual Leak Detector
VisualStudio 怎么使用Visual Leak Detector 那么在Windows下有什么好的内存泄漏检测工具呢?微软提供Visual Studio开发工具本身没有什么太好的内存泄漏检测 ...
- Visual Leak Detector 2.2.3 Visual C++内存检测工具
Visual Leak Detector是一款免费的.健全的.开源的Visual C++内存泄露检测系统.相比Visual C++自带的内存检测机制,Visual Leak Detector可以显 ...
- 使用Visual Leak Detector for Visual C++ 捕捉内存泄露
什么是内存泄漏? 内存泄漏(memory leak),指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况.内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段 ...
- VS2017 编译 Visual Leak Detector + VLD 使用示例
起因 一个Qt5+VS2017的工程,需要进行串口操作,在自动时发现一段时间软件崩溃了,没有保存log,在 debug 的时候发现每运行一次应用占据的内存就多一点,后来意识到是内存泄漏了.这个真是头疼 ...
- vld(Visual Leak Detector) 内存泄露检测工具
初识Visual Leak Detector 灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题.当程序越来越复 杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问题.内存 ...
- 使用Visual Leak Detector检测内存泄漏[转]
1.初识Visual Leak Detector 灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题.当程序越来越复杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问题 ...
随机推荐
- golang RWMutex RLock重入导致死锁
现象 一个组件实现了raft分布式协议,在分布式部署环境中来进行选主,在某客户现场突然发生文件句柄泄露,在打印某些错误日志后,几个小时内没有日志打印,然后某个协程突然报无可用的文件句柄. 分析 经过代 ...
- 第四章 快速排序 分而治之(divide an conquer)
def quicksort(array): if len(array) < 2: return array else: flag = array[0] less = [] greater = [ ...
- Altium Designer在原理图中复制报错InvalidParameter解决
Altium Designer 原理图复制出现 InvalidParameter Exception Occurred In Copy 解决方案为将下图红框中的√去掉 将红框中√去掉就点击右下 ...
- Kong网关安装自定义插件
安装自定义插件需要注意kong网关的版本要求!! 下面以安装Skywalking插件为例,要求Kong网关是2.2及以上版本,https://github.com/apache/skywalking- ...
- 基于5G边缘网关的智慧公交站台应用
发展智能物联网,有利于提高城市运行效率,优化居民生活体验,促进城市迸发活力.智能物联网已经融合进生活的方方面面,例如最常见.分布最广泛的公交站台,也能够通过物联网实现升级换代,为居民提供更丰富.更便捷 ...
- [Unity热更新]Addressables
参考链接: https://linxinfa.blog.csdn.net/article/details/122390621?spm=1001.2014.3001.5502 总结: 1.
- 记录一次mybatis pagehelper count order by 不生效
https://sample.blog.csdn.net/article/details/119216433?spm=1001.2101.3001.6650.5&utm_medium=dist ...
- Insecure Randomness 不安全的随机数
Insecure Randomness Abstract 标准的伪随机数生成器不能抵挡各种加密攻击. Explanation 在对安全性要求较高的环境中,使用一个能产生可预测数值的函数作为随机数据源, ...
- Python自动化环境搭建轻轻松松---selenium
其实安装selenium实现自动化搭建环境也不拿 一共四步 1.Python开发环境 2.安装selenium包 3.安装浏览器 4.安装你安装的浏览器驱动 一: 想要实现Python环境不可能缺席: ...
- GUI编程--1
GUI编程--1 GUI是什么 (Graphical User Interface),即用户图形界面编程. 怎么玩 平时怎么运用 组件 窗口 弹窗 面板 文本框 列表框 按钮 图片 监听事件 1.简介 ...