【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.datunins000.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.dllVisual Studio 2015Releasex64 模式编译源码生成。
  • 【文件 12】安装目录文件 .\bin\Win64\vld_x64.pdbVisual Studio 2015Releasex64 模式编译源码生成。
  • 【文件 13】安装目录文件 .\lib\Win64\vld.libVisual Studio 2015Releasex64 模式编译源码生成。
  • 【文件 14】安装目录文件 .\bin\Win32\vld_x86.dllVisual Studio 2015ReleaseWin32 模式编译源码生成。
  • 【文件 15】安装目录文件 .\bin\Win32\vld_x86.pdbVisual Studio 2015ReleaseWin32 模式编译源码生成。
  • 【文件 16】安装目录文件 .\lib\Win32\vld.libVisual Studio 2015ReleaseWin32 模式编译源码生成。

2. 源码编译生成 VLD 库

使用 Visual Studio 2015 打开源码根目录下的 vld_vs14.sln 或者 vld_vs14_wo_mfc.sln,当仅用于生成 VLD 库时,这两个解决方案的生成结果是一样的,详见本人另一篇博客 【VLD】源码文件概览。打开后,下拉构建配置框,可以看到有 6 种配置可供选择:DebugDebug_StaticCrtDebug_VldReleaseDebug_VldRelease_StaticCrtReleaseRelease_StaticCrt,他们的区别在于链接的运行库版本不同(详见 项目属性 -> C/C++ -> 代码生成 -> 运行库),以及是否启用优化。

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

打开 配置管理器,下拉查看不同的 活动解决方案配置,发现除 DebugDebug_StaticCrt 模式外,其余 4 种配置下 vld 的配置都为 Release。因此解决方案的配置选项选择除 DebugDebug_StaticCrt 外的 4 种都可以,不妨选择 Release

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

按下图步骤操作,生成 Win32 平台下的 VLD 库及 pdb 文件。

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

同样地,按下图步骤操作,生成 Win64 平台下的 VLD 库及 pdb 文件。

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

在生成目录 .\src\bin\Win32\Release-v140 下可以找到对应的 3 个文件:

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

同样地,在生成目录 .\src\bin\x64\Release-v140 下可以找到 Win64 平台的 3 个文件:

Oh Shit!-图片走丢了-打个广告-欢迎来博客园关注“木三百川”

至此,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,也不需要更改任何代码。

原文链接:https://www.cnblogs.com/young520/p/17348208.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:【Visual Leak Detector】源码编译 VLD 库 - Python技术站

(0)
上一篇 2023年4月22日
下一篇 2023年4月24日

相关文章

  • 【Visual Leak Detector】库的 22 个 API 使用说明

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇主要介绍 VLD 库提供的 22 个外部接口。同系列文章目录可见 《内存泄漏检测工具》目录 目录 说明 1. 头文件简介 2. 文件 vld_def.h 简介 3. 文件 vld.h 简介 3.1 接口 VLDDisable 3.2 接口 VLDEnable 3.3 接口 VLDRestore…

    C++ 2023年4月17日
    00
  • 【Visual Leak Detector】配置项 ReportFile

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍 VLD 配置文件中配置项 ReportFile 的使用方法。同系列文章目录可见 《内存泄漏检测工具》目录 目录 说明 1. 配置文件使用说明 2. 设置输出文件的路径 2.1 测试代码 2.2 ReportFile 为空时的输出 2.3 ReportFile 指定中文文件名时的输出 2.…

    C++ 2023年4月18日
    00
  • 最少步数

    在各种棋中,棋子的走法总是一定的,如中国象棋中马走“日”。有一位小学生就想如果马能有两种走法将增加其趣味性,因此,他规定马既能按“日”走,也能如象一样走“田”字。他的同桌平时喜欢下围棋,知道这件事后觉得很有趣,就想试一试,在一个(100*100)的围棋盘上任选两点A、B,A点放上黑子,B点放上白子,代表两匹马。棋子可以按“日”字走,也可以按“田”字走,俩人一…

    C++ 2023年4月25日
    00
  • 【Visual Leak Detector】配置项 SelfTest

    说明 使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇介绍 VLD 配置文件中配置项 SelfTest 的使用方法。 同系列文章目录可见 《内存泄漏检测工具》目录 目录 说明 1. 配置文件使用说明 2. 设置是否开启泄漏自检 2.1 测试代码 2.2 SelfTest = off 时的输出 2.3 SelfTest = on 时的输出 2.4 …

    C++ 2023年4月18日
    00
  • C语言跳转浏览器打开指定URL

    #include <stdlib.h> int main() { // 定义要打开的URL char* url = “https://rjku.gitee.io/”; // 调用系统命令以默认浏览器打开URL char command[100]; sprintf(command, “open %s”, url); system(command);…

    C++ 2023年4月27日
    00
  • 非常可乐

    题目描述 大家一定觉得运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为\(S (S < 101)\)毫升 (正好装满一瓶) ,它们三个之间可…

    C++ 2023年4月27日
    00
  • 07、【算例】openfoam带孔盘体应力分析

    官网:https://doc.cfd.direct/openfoam/user-guide-v9/platehole$FOAM_TUTORIALS/stressAnalysis/solidDisplacementFoam下的案例 1、网格划分 /*——————————–*- C++ -*—————…

    C++ 2023年4月18日
    00
  • Qt-FFmpeg开发-音频解码为PCM文件(9)

    音视频/FFmpeg #Qt Qt-FFmpeg开发-使用libavcodec API的音频解码示例(MP3转pcm) 目录 音视频/FFmpeg #Qt Qt-FFmpeg开发-使用libavcodec API的音频解码示例(MP3转pcm) 1、概述 2、实现效果 3、主要代码 4、完整源代码 更多精彩内容 ?个人内容分类汇总 ? ?音视频开发 ? 1、…

    C++ 2023年4月17日
    00
合作推广
合作推广
分享本页
返回顶部