IT评测·应用市场-qidao123.com
标题:
【Visual Leak Detector】源码编译 VLD 库
[打印本页]
作者:
南飓风
时间:
2023-4-24 00:51
标题:
【Visual Leak Detector】源码编译 VLD 库
说明
使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍 VLD 源码的编译。同系列文章目录可见
《内存泄漏检测工具》目录
目录
说明
1. VLD 库的依赖文件
2. 源码编译生成 VLD 库
3. 配置环境变量
4. 使用 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,也不需要更改任何代码。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4