论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
【Visual Leak Detector】源码编译 VLD 库
【Visual Leak Detector】源码编译 VLD 库
南飓风
金牌会员
|
2023-4-24 00:51:04
|
显示全部楼层
|
阅读模式
楼主
主题
923
|
帖子
923
|
积分
2769
说明
使用 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,也不需要更改任何代码。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
南飓风
金牌会员
这个人很懒什么都没写!
楼主热帖
零信任介绍
容斥原理
开源SPL助力JAVA处理公共数据文件(txt ...
数理逻辑第1-3章
使用 Helm 安装 MQTT 服务器-EMQX ...
Ubuntu如何安装Mysql+启用远程连接[完 ...
dotnet 修复在 Linux 上使用 SkiaSharp ...
DOS窗口命令和单表简单查询
Java笔记(13) 简单的Lambda表达式 ...
day02-自己实现Mybatis底层机制-01 ...
标签云
存储
服务器
浏览过的版块
Oracle
快速回复
返回顶部
返回列表