首页 > 编程语言 >【Visual Leak Detector】源码文件概览

【Visual Leak Detector】源码文件概览

时间:2023-04-22 19:55:16浏览次数:36  
标签:文件 tests Leak vld VLD Visual 文件夹 cpp 源码

说明

使用 VLD 内存泄漏检测工具辅助开发时整理的学习笔记。本篇对 VLD 源码包中的各文件用途做个概述。同系列文章目录可见 《内存泄漏检测工具》目录

目录


1. 整体概览

vld2.5.1 版本为例,下载源码 后,根目录下一共 5 个文件夹:.teamcitylibmfc_detectsetupsrc。还有 12 个文件:.editorconfig.gitignore.mailmapappveyor.ymlAUTHORS.txtchange_toolset.ps1CHANGES.txtCOPYING.txtREADME.mdvld.inivld_vs14.slnvld_vs14_wo_mfc.sln

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

2. 文件夹 .teamcity

该文件夹的目录结构如下:

vld-master\.teamcity
└─Vld
    │  project-config.xml
    │
    ├─buildTypes
    │      Vld_CompileAll.xml
    │      Vld_DebugCrtDllWin32.xml
    │
    ├─pluginData
    │      plugin-settings.xml
    │
    └─vcsRoots
            Vld_HttpsGithubComKindDragonVldGitRefsHeadsMaster.xml

里面全是 xml 文件,是 teamcity 持续集成工具的配置文件,用于 VLD 项目源码的集成管理,关于该工具的介绍,可访问其官网:Jetbrains-teamcity

3 文件夹 lib

该文件夹下有三个子文件夹:cppformatdbghelpgtest

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

3.1 文件夹 cppformat(生成 libformat)

该文件夹的目录结构如下:

vld-master\lib\cppformat
    ChangeLog.rst
    format.cc
    format.h
    format.vcxproj
    format.vcxproj.filters
    LICENSE.rst
    posix.cc
    posix.h

cppformat 是一个开源的 C++ 格式化库,仓库地址为 Github-fmtlib,在 VLD 中被用来格式化输出堆栈信息,详见 源码 callstack.cpp 第 224~275 行

3.2 文件夹 dbghelp

该文件夹的目录结构如下:

vld-master\lib\dbghelp
├─include
│      DbgHelp.h
│
└─lib
    ├─Win32
    │      DbgHelp.Lib
    │
    └─x64
            DbgHelp.Lib

dbghelpWindows 系统下的调试跟踪库,相关信息可见 关于 DbgHelp,在 VLD 中被用来获取堆栈信息,详见源码中 callstack.cppvld.cppvld_hooks.cpp 等文件。

3.3 文件夹 gtest(生成 libgtest)

该文件夹的目录结构如下:

vld-master\lib\gtest
│  CHANGES
│  CMakeLists.txt
│  configure
│  configure.ac
│  CONTRIBUTORS
│  LICENSE
│  Makefile.am
│  Makefile.in
│  README
│
├─include
│  └─gtest
│      │  gtest-death-test.h
│      │  gtest-message.h
│      │  gtest-param-test.h
│      │  gtest-param-test.h.pump
│      │  gtest-printers.h
│      │  gtest-spi.h
│      │  gtest-test-part.h
│      │  gtest-typed-test.h
│      │  gtest.h
│      │  gtest_pred_impl.h
│      │  gtest_prod.h
│      │
│      └─internal
│              gtest-death-test-internal.h
│              gtest-filepath.h
│              gtest-internal.h
│              gtest-linked_ptr.h
│              gtest-param-util-generated.h
│              gtest-param-util-generated.h.pump
│              gtest-param-util.h
│              gtest-port.h
│              gtest-string.h
│              gtest-tuple.h
│              gtest-tuple.h.pump
│              gtest-type-util.h
│              gtest-type-util.h.pump
│
├─msvc
│      gtest-md.sln
│      gtest.sln
│      gtest.vcxproj
│      gtest.vcxproj.filters
│      gtest_main.vcxproj
│      gtest_main.vcxproj.filters
│      gtest_prod_test.vcxproj
│      gtest_prod_test.vcxproj.filters
│      gtest_unittest.vcxproj
│      gtest_unittest.vcxproj.filters
│
└─src
        gtest-all.cc
        gtest-death-test.cc
        gtest-filepath.cc
        gtest-internal-inl.h
        gtest-port.cc
        gtest-printers.cc
        gtest-test-part.cc
        gtest-typed-test.cc
        gtest.cc
        gtest_main.cc

gtestGoogle 开源的单元测试框架,仓库地址为 Github-googletest,在 VLD 中被用来测试 VLD 的各个功能,生成测试报告,详见 vld-master\src\tests 文件夹

4 文件夹 mfc_detect(vld 辅助工程)

该文件夹的目录结构如下:

vld-master\mfc_detect
│  resource.h
│  StdAfx.cpp
│  StdAfx.h
│  vldmfc.cpp
│  vldmfc.h
│  vldmfc.rc
│  vldmfc_detect.sln
│  vldmfc_detect.vcxproj
│  vldmfc_detect.vcxproj.filters
│  vldmfc_detect_vs10.sln
│  vldmfc_detect_vs11.sln
│  vldmfc_detect_vs14.sln
│
└─res
        vldmfc.ico
        vldmfc.rc2

这个文件夹中的 sln 解决方案,主要用于获取各版本 mfc.dllnew 函数序号(即 ORDINAL 值),将获取的函数序号用于 VLD 开发,用处详见 源码 dllspatches.cpp 第 88~370 行,获取思路详见 StackOverflow-Getting-ordinal-from-function-name-programmatically,获取时对应的动态库版本及函数详见 文件 vldmfc.cpp 第 189~301 行。这个文件夹下有多个 .sln 文件,它们分别对应不同的 Microsoft Visual Studio 版本,将其用记事本或其他文本编辑器打开,可以知道对应的版本号:

  • 文件 vldmfc_detect.sln 对应 Visual Studio 2008VC 版本号为 VC9.0
  • 文件 vldmfc_detect_vs10.sln 对应 Visual Studio 2010VC 版本号为 VC10.0
  • 文件 vldmfc_detect_vs11.sln 对应 Visual Studio 2012VC 版本号为 VC11.0
  • 文件 vldmfc_detect_vs14.sln 对应 Visual Studio 2015VC 版本号为 VC14.0

5 文件夹 setup

这个文件夹中的文件主要用来打包 VLD 的安装程序,使用的安装制作软件为 Inno Setup 5.4.2,其官网为:Inno Setup。该文件夹下有两个子文件夹:dbghelpeditenv。以及 6 个文件:build_version.batlicense-free.txtmodpath.issversion.hvld-setup.issWizSmallImage.bmp

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

5.1 文件夹 dbghelp

该文件夹的目录结构如下:

vld-master\setup\dbghelp
├─x64
│      dbghelp.dll
│      Microsoft.DTfW.DHL.manifest
│
└─x86
        dbghelp.dll
        Microsoft.DTfW.DHL.manifest

dbghelp 下存储的是 VLD 依赖的 dbghelp 动态库及对应的清单文件(.manifest 文件),安装 VLD 时会被存储到 VLD 安装目录下(详见 .\Visual Leak Detector\bin)。

5.2 文件夹 editenv

该文件夹的目录结构如下,只有一个 editenv.dll 文件:

vld-master\setup\editenv
    editenv.dll

这个库是 Dan Moulding 旧版 VLD 修改环境变量时使用的动态库,详见 StackOverflow-programmatically-adding-a-directory-to-windows-path-environment-variable,对应的仓库为 Github-editenvKindDragon 新版 VLD 是没有用到这个文件的,使用的是文件 modpath.iss,另一种方法。

5.3 文件 build_version.bat

文件 build_version.bat 是批处理脚本,用于 Inno Setup 快速打包 VLD 安装器。

5.4 文件 license-free.txt

文件 license-free.txt 是要在 VLD 安装程序中显示的许可信息。

5.5 文件 modpath.iss

文件 modpath.issInno Setup 脚本,采用 Pascal 编写,用于 VLD 安装时修改 Path 环境变量。

5.6 文件 version.h

文件 version.h 存储 VLD 的版本信息,被 VLD 源码引用,详见 源码 vldint.h 第 40 行

5.7 文件 vld-setup.iss

文件 vld-setup.issInno Setup 生成的脚本,用于指导生成 VLD 安装器,默认情况下,在安装完成后会生成对应的卸载器 unins000.datunins000.exe,详见 VLD 安装目录。

5.8 文件 WizSmallImage.bmp

文件 WizSmallImage.bmp 是安装程序右上角显示的图像。

6 文件夹 src

这个文件夹用来存储 VLD 库的核心源代码,以及 VLD 功能测试的源代码。有一个 tests 子文件夹及另外 34 个文件。

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

6.1 外部 34 个文件(vld 核心工程)

34 个文件分别为:

vld-master\src
   callstack.cpp
   callstack.h
   criticalsection.h
   crtmfcpatch.h
   dbghelp.h
   dllspatches.cpp
   loaderlock.h
   map.h
   ntapi.cpp
   ntapi.h
   resource.h
   runalltests.bat
   runtests.bat
   set.h
   stdafx.cpp
   stdafx.h
   tree.h
   utility.cpp
   utility.h
   vld.cpp
   vld.dll.dependency.x64.manifest
   vld.dll.dependency.x86.manifest
   vld.h
   vld.natvis
   vld.rc
   vld.vcxproj
   vld.vcxproj.filters
   vldallocator.h
   vldapi.cpp
   vldheap.cpp
   vldheap.h
   vldint.h
   vld_def.h
   vld_hooks.cpp

其中有 17.h 文件、9.cpp 文件,都是 VLD 核心源码的一部分,以下 6 个文件用于 VLD 项目配置、依赖库的版本控制等:

vld.natvis
vld.rc
vld.vcxproj
vld.vcxproj.filters
vld.dll.dependency.x64.manifest
vld.dll.dependency.x86.manifest

以下两个批处理文件用于 VLD 的功能批量测试,并自动生成测试报告。

runalltests.bat
runtests.bat

6.2 文件夹 tests

这个文件夹用来存储 VLD 的测试工程代码以及使用示例工程代码,有 14 个子文件夹及另外 2 个文件。

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

  • Common.propsVS 的属性管理文件,被多个 VLD 测试工程所使用,使用介绍可参考 .vcxproj 和 .props 文件结构
  • copydlls.bat 是批处理脚本,被用做为 VLD 测试工程的预先生成事件(Pre-Build Event),将 vld.inivld_xx.dllvld_xx.pdbdbghelp.dllMicrosoft.DTfW.DHL.manifest5 个依赖文件复制到指定目录。

6.3 文件夹 tests\basics(测试工程)

该文件夹的目录结构如下:

vld-master\src\tests\basics
    Allocs.cpp
    Allocs.h
    basics.cpp
    basics.vcxproj
    basics.vcxproj.filters
    basics_disabled.cpp
    stdafx.cpp
    stdafx.h
    targetver.h

这是一个 VLD 测试工程,用来测试:当使用不同的内存分配函数(例如 malloccallocplacement new 等)时,VLD 能否正确检测出内存泄漏。被测的内存分配函数详见 Allocs.h 文件Allocs.cpp 文件。测试用例详见 basics.cpp 文件basics_disabled.cpp 文件

6.4 文件夹 tests\console(示例工程)

该文件夹的目录结构如下:

vld-master\src\tests\console
    main.c
    main.cpp
    README.md
    vldconsole.sln
    vldconsole.vcxproj
    vldconsole.vcxproj.filters
    vldconsole_vs10.sln

这是一个 VLD 示例工程,用来演示如何在普通的控制台程序中使用 VLD 库,演示目标为:VLD 库不仅能检测出 C 程序中 malloc 引起的泄漏(详见 main.c 文件),也能检测出 C++ 程序中 new 引起的泄漏(详见 main.cpp 文件)。

  • 文件 vldconsole.sln 对应 Visual Studio 2008VC 版本号为 VC9.0
  • 文件 vldconsole_vs10.sln 对应 Visual Studio 2010VC 版本号为 VC10.0

6.5 文件夹 tests\corruption(测试工程)

该文件夹的目录结构如下:

vld-master\src\tests\corruption
    corruption.cpp
    corruption.vcxproj
    corruption.vcxproj.filters
    stdafx.cpp
    stdafx.h
    targetver.h
    Tests.cpp
    Tests.h

这是一个 VLD 测试工程,用来测试:当内存分配函数与释放函数不匹配(例如 mallocdelete 配对使用)、分配的堆与释放的堆不匹配时,VLD 能否正确检测出内存泄漏。被测的失配用法详见 Tests.h 文件Tests.cpp 文件。测试用例详见 corruption.cpp 文件

6.6 文件夹 tests\dynamic_app(测试工程)

该文件夹的目录结构如下:

vld-master\src\tests\dynamic_app
    dynamic_app.cpp
    dynamic_app.vcxproj
    dynamic_app.vcxproj.filters
    LoadTests.cpp
    LoadTests.h
    stdafx.cpp
    stdafx.h
    targetver.h
    ThreadTest.cpp
    ThreadTests.h

这是一个 VLD 测试工程,用来测试:当动态加载普通动态库与 MFC 动态库时,VLDEnableModuleVLDResolveCallstacks 功能是否正常,以及当在多线程中加载动态库时,VLDGetLeaksCount 及泄漏检测功能是否正常。被测的动态加载用法详见 LoadTests.h 文件LoadTests.cpp 文件,被测的多线程用法详见 ThreadTests.h 文件ThreadTest.cpp 文件。测试用例详见 dynamic_app.cpp 文件。这一测试工程需依赖 dynamic.dlltest_mfc.dll 这两个动态库,它们由 tests 文件夹下的另外两个工程生成。

6.7 文件夹 tests\dynamic_dll(测试辅助工程)

该文件夹的目录结构如下:

vld-master\src\tests\dynamic_dll
    dllmain.cpp
    dynamic.cpp
    dynamic.h
    dynamic.vcxproj
    dynamic.vcxproj.filters
    stdafx.cpp
    stdafx.h
    targetver.h

这是一个 VLD 测试辅助工程,用来生成动态库 dynamic.dll,然后将生成的动态库给其他测试工程做 VLD 功能测试。库中用三种方式(mallocnewnew[])分别产生 6 处泄漏,一共 18 处泄漏,且库源码中未包含 vld.h,详见 dynamic.h 文件dynamic.cpp 文件

6.8 文件夹 tests\mfc(示例工程)

该文件夹的目录结构如下:

vld-master\src\tests\mfc
│  resource.h
│  StdAfx.cpp
│  StdAfx.h
│  vldmfc.cpp
│  vldmfc.h
│  vldmfc.rc
│  vldmfc.sln
│  vldmfc.vcxproj
│  vldmfc.vcxproj.filters
│  vldmfcdlg.cpp
│  vldmfcdlg.h
│  vldmfc_vs10.sln
│
└─res
        vldmfc.ico
        vldmfc.rc2

这是一个 VLD 示例工程,用来演示如何在 MFC 程序中使用 VLD 库,演示目标为:VLD 库能检测出 MFC 程序中的内存泄漏。它通过模态显示一个选择对话框(详见 vldmfcdlg.h 文件vldmfcdlg.cpp 文件),让用户选择是否故意产生一个内存泄漏(详见 vldmfc.h 文件vldmfc.cpp 文件),然后通过查看控制台的 VLD 输出,来演示其内存泄漏检测功能。

  • 文件 vldmfc.sln 对应 Visual Studio 2008VC 版本号为 VC9.0
  • 文件 vldmfc_vs10.sln 对应 Visual Studio 2010VC 版本号为 VC10.0

6.9 文件夹 tests\mfc_dll(测试辅助工程)

该文件夹的目录结构如下:

vld-master\src\tests\mfc_dll
│  mfc.cpp
│  mfc.def
│  mfc.h
│  mfc.rc
│  mfc.vcxproj
│  mfc.vcxproj.filters
│  Resource.h
│  stdafx.cpp
│  stdafx.h
│  targetver.h
│
└─res
        mfc.rc2

这是一个 VLD 测试辅助工程,用来生成动态库 test_mfc.dll,然后将生成的动态库给其他测试工程做 VLD 功能测试。库中用三种方式(newCString initialisation with stringnew[])产生一共 11 处泄漏,且库源码中未包含 vld.h,详见 mfc.cpp 文件

6.10 文件夹 tests\suite(测试工程)

该文件夹的目录结构如下:

vld-master\src\tests\suite
    testsuite.cpp
    testsuite.vcxproj
    testsuite.vcxproj.filters
    testsuite.vcxproj.vspscc

这是一个 VLD 测试工程,只有一个 cpp 文件,用来测试:在多线程(使用 _beginthreadex 创建线程)、多种分配方式(例如 newmallocHeapAlloc 等)、不同递归深度、随机分配内存、随机释放内存时,VLD 能否按需正确检测出内存泄漏(测试过程中也会随机地配对使用 VLDDisableVLDRestore 忽略一些泄漏,详见 testsuite.cpp 第 220~225 行)。

6.11 文件夹 tests\vld_ComTest(测试辅助工程)

该文件夹的目录结构如下:

vld-master\src\tests\vld_ComTest
    ComTest.aps
    ComTest.cpp
    ComTest.def
    ComTest.idl
    ComTest.rc
    ComTest.rgs
    ComTest.sln
    ComTest_vs14.vcxproj
    ComTest_vs14.vcxproj.filters
    dlldata.c
    dllmain.cpp
    dllmain.h
    MyMath.cpp
    MyMath.h
    MyMath.rgs
    Resource.h
    stdafx.cpp
    stdafx.h
    targetver.h
    xdlldata.c
    xdlldata.h

这是一个 VLD 测试辅助工程,用于测试 VLD 能否检测到 COM-based leaks,工程运行后生成了一个 COM 组件 ComTest.dll,源文件 stdafx.h 中有 #include <vld.h>,但其接口函数并没有故意产生内存泄漏(如下,详见 MyMath.cpp 文件),且在 tests 文件夹下未发现有工程使用了 ComTest.dll

STDMETHODIMP CMyMath::Test(void)
{
	AFX_MANAGE_STATE(AfxGetStaticModuleState());

	return S_OK;
}

6.12 文件夹 tests\vld_dll1(测试辅助工程)

该文件夹的目录结构如下:

vld-master\src\tests\vld_dll1
    dllmain.cpp
    stdafx.cpp
    stdafx.h
    targetver.h
    vld_dll1_vs14.vcxproj
    vld_dll1_vs14.vcxproj.filters

这是一个 VLD 测试辅助工程,用来生成动态库 vld_dll1.dll,然后将生成的动态库给其他测试工程做 VLD 功能测试,这个库源码中包含了 vld.h,且使用了 VLD_FORCE_ENABLE 宏。库中用 malloc 产生 1 处泄漏,详见 dllmain.cpp 文件

6.13 文件夹 tests\vld_dll2(测试辅助工程)

该文件夹的目录结构如下:

vld-master\src\tests\vld_dll2
    dllmain.cpp
    stdafx.cpp
    stdafx.h
    targetver.h
    vld_dll2_vs14.vcxproj
    vld_dll2_vs14.vcxproj.filters

这是一个 VLD 测试辅助工程,用来生成动态库 vld_dll2.dll,然后将生成的动态库给其他测试工程做 VLD 功能测试。与 vld_dll1.dll 一样,这个库源码中(stdafx.h 文件)包含了 vld.h,且使用了 VLD_FORCE_ENABLE 宏。库中用 malloc 产生 1 处泄漏,详见 dllmain.cpp 文件

6.14 文件夹 tests\vld_main(示例工程)

该文件夹的目录结构如下:

vld-master\src\tests\vld_main
    stdafx.cpp
    stdafx.h
    targetver.h
    vld_main.cpp
    vld_main_vs14.vcxproj
    vld_main_vs14.vcxproj.filters

这是一个 VLD 示例工程,工程运行后生成了 vld_main.exe,演示目标为:VLD 能检测出全局静态变量的内存泄漏,详见 vld_main.cpp 文件

6.15 文件夹 tests\vld_main_test(测试工程)

该文件夹的目录结构如下:

vld-master\src\tests\vld_main_test
    stdafx.cpp
    stdafx.h
    targetver.h
    vld_main_test.cpp
    vld_main_test_vs14.vcxproj
    vld_main_test_vs14.vcxproj.filters

这是一个 VLD 测试工程,用来测试:VLD 对全局静态变量的泄漏检测功能是否正常,被测程序为 tests\vld_main 工程生成的 vld_main.exe。测试用例详见 vld_main_test.cpp 文件

6.16 文件夹 tests\vld_unload(测试工程)

该文件夹的目录结构如下:

vld-master\src\tests\vld_unload
    stdafx.cpp
    stdafx.h
    targetver.h
    vld_unload.cpp
    vld_unload_vs14.vcxproj
    vld_unload_vs14.vcxproj.filters

这是一个 VLD 测试工程,用来测试:主工程未包含 vld.h,但多个被调的动态库包含 vld.h 时,对各 dll 进行动态安装、动态卸载的情况下,VLD 的泄漏检测功能是否正常。测试用例详见 vld_unload.cpp 文件。这一测试工程需依赖 vld_dll1.dllvld_dll2.dll 这两个动态库,它们由 tests 文件夹下的另外两个工程生成。

7 其余 12 个文件

源码根目录下还有以下 12 个文件:

vld-master
   .editorconfig
   .gitignore
   .mailmap
   appveyor.yml
   AUTHORS.txt
   CHANGES.txt
   change_toolset.ps1
   COPYING.txt
   README.md
   vld.ini
   vld_vs14.sln
   vld_vs14_wo_mfc.sln

7.1 文件 .editorconfig

这个文件用来统一代码样式,帮助开发者维护编辑器编码风格,以下几个资料对理解该文件的作用有帮助:

7.2 文件 .gitignore

这个文件用来指明源码上传 Git 时,哪些文件应该被忽略,这些文件无需纳入 Git 管理。Github-gitignore 上有一些 .gitignore 文件模板,需要时可以拿来用。

7.3 文件 .mailmap

这个文件用于将作者姓名和电子邮件映射到单个规范值,以下几个资料对理解该文件的作用有帮助:

7.4 文件 appveyor.yml

这个文件用于持续集成服务,自动构建项目,以下几个资料对理解该文件的作用有帮助:

7.5 文件 AUTHORS.txt

这个文件用于罗列开发者清单。

7.6 文件 CHANGES.txt

这个文件用于记录版本迭代日志,各版本更新提要。

7.7 文件 change_toolset.ps1

这个文件是一个 PowerShell 脚本,阅读内容可知这个脚本是用来批量更改 Toolset 值的。除 format.vcxprojvld.vcxproj 这两个文件外,它能修改当前目录及其所有子文件夹中的 vcxproj 文件,将文件中的 <PlatformToolset> 值修改为指定值。同时,修改 .\src\tests\Common.props 文件中的 <VldToolset> 值为指定值。关于 <PlatformToolset>,可参考 Microsoft-platform-toolset 以及 关于VS项目属性: Target Platform Version 和 Platform ToolSet

7.8 文件 COPYING.txt

这是一份许可说明文件,内容是 LGPL 2.1 开源协议。

7.9 文件 README.md

这个文件里对 VLD 的功能用途做了大致介绍,与 Github-VLD 上的介绍内容一样。

7.10 文件 vld.ini

这个是 VLD 库的配置文件,库的使用者需要用到,使用方法详见本人同系列文章。

7.11 文件 vld_vs14.sln

这个文件是 VLD 项目的解决方案文件,需用 Visual Studio 2015 打开,内含 16 个子项目,包含 VLD 库项目、测试项目、示例项目,如下图所示:

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

各项目的简要介绍见下表,可以根据项目文件夹名称上翻本文章到介绍处。

标号 项目名称 对应文件夹名称 项目简介
1 dynamic vld-master\src\tests\dynamic_dll 测试用 - 依赖库
2 test_mfc vld-master\src\tests\mfc_dll 测试用 - 依赖库
3 vld_dll1 vld-master\src\tests\vld_dll1 测试用 - 依赖库
4 vld_dll2 vld-master\src\tests\vld_dll2 测试用 - 依赖库
5 libformat vld-master\lib\cppformat VLD - 输出格式化库
6 libgtest vld-master\lib\gtest\msvc Google Test 测试框架
7 ComTest vld-master\src\tests\vld_ComTest 测试用-依赖库
8 corruption vld-master\src\tests\corruption 库功能测试
9 dynamic_app vld-master\src\tests\dynamic_app 库功能测试
10 test_basics vld-master\src\tests\basics 库功能测试
11 testsuite vld-master\src\tests\suite 库功能测试
12 vld_main vld-master\src\tests\vld_main 用法示例
13 vld_main_test vld-master\src\tests\vld_main_test 库功能测试
14 vld_unload vld-master\src\tests\vld_unload 库功能测试
15 vldmfc vld-master\src\tests\mfc 用法示例
16 vld vld-master\src VLD - 库

7.12 文件 vld_vs14_wo_mfc.sln

这个文件也是 VLD 项目的解决方案文件,需用 Visual Studio 2015 打开,内含 13 个子项目,包含 VLD 库项目、测试项目、示例项目,文件名中的 wowithout 的简写,表示没有 MFC 相关的测试项目(除了没有 test_mfcComTestvldmfc 这三个项目外,其他地方与 vld_vs14.sln 一样),如下图所示:

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

标签:文件,tests,Leak,vld,VLD,Visual,文件夹,cpp,源码
From: https://www.cnblogs.com/young520/p/17343785.html

相关文章

  • vue2源码-十二、mixin的使用和原理
    mixin的使用和原理使用:可以通过Vue.mixin来实现逻辑的复用,问题在于数据来源不明确。声明的时候可能对导致命名冲突vue3采用的就是compositionAPI局部混入:varmyMixin={created:function(){this.hello()},methods:{hello:function(){......
  • 【源码分析】XXL-JOB的执行器的注册流程
    目的:分析xxl-job执行器的注册过程流程:获取执行器中所有被注解(@xxlJjob)修饰的handler执行器注册过程执行器中任务执行过程版本:xxl-job2.3.1建议:下载xxl-job源码,按流程图debug调试,看堆栈信息并按文章内容理解执行流程。完整流程图:查找Handler任务部分流程图:首先启......
  • 深入 NODEJS 源码探究 CPU 信息的获取与利用率计算
    在Linux下我们通过top或者htop命令可以看到当前的CPU资源利用率,另外在一些监控工具中你可能也遇见过,那么它是如何计算的呢?在Nodejs中我们该如何实现?带着这些疑问,本节会先从Linux下的CPU利用率进行一个简单讲解做一下前置知识铺垫,之后会深入Nodejs源码,去探讨如何......
  • UE5新功能StateTree源码解析
    StateTree是一种UE5中新增的通用分层状态机,其组合了行为树中的选择器(Selectors)与状态机中的状态(States)和过渡(Transitions)。用户可以创建非常高效、保持灵活且井然有序的逻辑。StateTree包含以树结构布局的状态。状态选择可以在树中的任意位置触发。相比行为树,其组织方式更......
  • 04:基础入门-WEB源码拓展
    前言:WEB源码在安全测试中是非常重要的信息来源,可以用来代码审计漏洞也可以用来做信息突破口,其中WEB源码有很多技术需要简明分析。比如:获取某ASP源码后可以采用默认数据库下载为突破,获取某其他脚本源码漏洞可以进行代码审计挖掘或分析其业务逻辑等,总之源码的获取将为后期的安全......
  • Visual Studio Code开发常用的工具栏选项,查看源码技巧以及【vscode常用的快捷键】
    一、开发常用的工具栏选项1、当前打开的文件快速在左侧资源树中定位:其实打开了当前的文件已经有在左侧资源树木定位了,只是颜色比较浅2、打开太多文件的时候,可以关闭3、设置查看当前类或文件的结构OUTLINE相当于idea查看当前类或接口的结构Structure二、查看源码技巧:(1)Ctr+鼠标......
  • Visual Studio Code 常见的配置、常用好用插件以及【vsCode 开发相应项目推荐安装的插
    一、VsCode常见的配置1、取消更新把插件的更新也一起取消了2、设置编码为utf-8:默认就是了,不用设置了3、设置常用的开发字体:Consolas,默认就是了,不用设置了字体对开发也很重要,不同字体,字母形态都不太一样,尤其是标点符号,逗号和分号的区分,有的字体看着这两者就很像4、设置ctr+滚轮,改......
  • FPGA终于可以愉快地写代码了!Vivado和Visual Studio Code黄金搭档
    ​ 如果你是一位FPGA开发者,那么你一定会对VIvado这款软件非常熟悉。但是,对于vivado兼容的第三方编辑器软件,你知道VisualStudioCode吗?这是个非常不错的选择,VisualStudioCode搭配众多插件,能让你FPGA开发如虎添翼,效率飞升!别犹豫了,赶紧来看看本文,把这款神器装起来吧!VisualStud......
  • Vue3快速上手+俩种创建方式+主要源码讲解
    一.Vue3快速上手2020年9月19日凌晨,尤雨溪正式发布了Vue.js3.0版本,代号:OnePiece。此框架新的主要版本提供了更好的性能、更小的捆绑包体积、更好的TypeScript集成、用于处溪理大规模用例的新API,并为框架未来的长期迭代奠定了坚实的基础。3.0版本的开发周期长达两年多,期间......
  • boot-admin整合flowable官方editor-app源码进行BPMN2-0建模(续)
    boot-admin整合flowable官方editor-app源码进行BPMN2-0建模(续)书接上回项目源码仓库github项目源码仓库giteeboot-admin是一款采用前后端分离模式、基于SpringCloud微服务架构的SaaS后台管理框架。系统内置基础管理、权限管理、运行管理、定义管理、代码生成器和办公管理6个功......