說明 使用 VLD 記憶體泄漏檢測工具輔助開發時整理的學習筆記。本篇對 VLD 源碼包中的各文件用途做個概述。同系列文章目錄可見 《記憶體泄漏檢測工具》目錄 1. 整體概覽 以 vld2.5.1 版本為例,下載源碼 後,根目錄下一共 5 個文件夾:.teamcity、lib、mfc_detect、set ...
說明
使用 VLD 記憶體泄漏檢測工具輔助開發時整理的學習筆記。本篇對 VLD 源碼包中的各文件用途做個概述。同系列文章目錄可見 《記憶體泄漏檢測工具》目錄
目錄- 說明
- 1. 整體概覽
- 2. 文件夾 .teamcity
- 3 文件夾 lib
- 4 文件夾 mfc_detect(vld 輔助工程)
- 5 文件夾 setup
- 6 文件夾 src
- 6.1 外部 34 個文件(vld 核心工程)
- 6.2 文件夾 tests
- 6.3 文件夾 tests\basics(測試工程)
- 6.4 文件夾 tests\console(示例工程)
- 6.5 文件夾 tests\corruption(測試工程)
- 6.6 文件夾 tests\dynamic_app(測試工程)
- 6.7 文件夾 tests\dynamic_dll(測試輔助工程)
- 6.8 文件夾 tests\mfc(示例工程)
- 6.9 文件夾 tests\mfc_dll(測試輔助工程)
- 6.10 文件夾 tests\suite(測試工程)
- 6.11 文件夾 tests\vld_ComTest(測試輔助工程)
- 6.12 文件夾 tests\vld_dll1(測試輔助工程)
- 6.13 文件夾 tests\vld_dll2(測試輔助工程)
- 6.14 文件夾 tests\vld_main(示例工程)
- 6.15 文件夾 tests\vld_main_test(測試工程)
- 6.16 文件夾 tests\vld_unload(測試工程)
- 7 其餘 12 個文件
1. 整體概覽
以 vld2.5.1
版本為例,下載源碼 後,根目錄下一共 5
個文件夾:.teamcity
、lib
、mfc_detect
、setup
、src
。還有 12
個文件:.editorconfig
、.gitignore
、.mailmap
、appveyor.yml
、AUTHORS.txt
、change_toolset.ps1
、CHANGES.txt
、COPYING.txt
、README.md
、vld.ini
、vld_vs14.sln
、vld_vs14_wo_mfc.sln
。
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
該文件夾下有三個子文件夾:cppformat
、dbghelp
、gtest
。
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
dbghelp
是 Windows
系統下的調試跟蹤庫,相關信息可見 關於 DbgHelp,在 VLD
中被用來獲取堆棧信息,詳見源碼中 callstack.cpp、vld.cpp、vld_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
gtest
是 Google
開源的單元測試框架,倉庫地址為 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.dll
的 new
函數序號(即 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 2008
,VC
版本號為VC9.0
。 - 文件
vldmfc_detect_vs10.sln
對應Visual Studio 2010
,VC
版本號為VC10.0
。 - 文件
vldmfc_detect_vs11.sln
對應Visual Studio 2012
,VC
版本號為VC11.0
。 - 文件
vldmfc_detect_vs14.sln
對應Visual Studio 2015
,VC
版本號為VC14.0
。
5 文件夾 setup
這個文件夾中的文件主要用來打包 VLD
的安裝程式,使用的安裝製作軟體為 Inno Setup 5.4.2
,其官網為:Inno Setup。該文件夾下有兩個子文件夾:dbghelp
、editenv
。以及 6
個文件:build_version.bat
、license-free.txt
、modpath.iss
、version.h
、vld-setup.iss
、WizSmallImage.bmp
。
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-editenv。KindDragon
新版 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.iss
是 Inno Setup
腳本,採用 Pascal
編寫,用於 VLD
安裝時修改 Path
環境變數。
5.6 文件 version.h
文件 version.h
存儲 VLD
的版本信息,被 VLD
源碼引用,詳見 源碼 vldint.h 第 40 行。
5.7 文件 vld-setup.iss
文件 vld-setup.iss
是 Inno Setup
生成的腳本,用於指導生成 VLD
安裝器,預設情況下,在安裝完成後會生成對應的卸載器 unins000.dat
與 unins000.exe
,詳見 VLD
安裝目錄。
5.8 文件 WizSmallImage.bmp
文件 WizSmallImage.bmp
是安裝程式右上角顯示的圖像。
6 文件夾 src
這個文件夾用來存儲 VLD
庫的核心源代碼,以及 VLD
功能測試的源代碼。有一個 tests
子文件夾及另外 34
個文件。
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
個文件。
Common.props
是VS
的屬性管理文件,被多個VLD
測試工程所使用,使用介紹可參考 .vcxproj 和 .props 文件結構。copydlls.bat
是批處理腳本,被用做為VLD
測試工程的預先生成事件(Pre-Build Event),將vld.ini
、vld_xx.dll
、vld_xx.pdb
、dbghelp.dll
、Microsoft.DTfW.DHL.manifest
這5
個依賴文件複製到指定目錄。
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
測試工程,用來測試:當使用不同的記憶體分配函數(例如 malloc
、calloc
、placement 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 2008
,VC
版本號為VC9.0
。 - 文件
vldconsole_vs10.sln
對應Visual Studio 2010
,VC
版本號為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
測試工程,用來測試:當記憶體分配函數與釋放函數不匹配(例如 malloc
與 delete
配對使用)、分配的堆與釋放的堆不匹配時,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
動態庫時,VLDEnableModule
及 VLDResolveCallstacks
功能是否正常,以及當在多線程中載入動態庫時,VLDGetLeaksCount
及泄漏檢測功能是否正常。被測的動態載入用法詳見 LoadTests.h 文件 與 LoadTests.cpp 文件,被測的多線程用法詳見 ThreadTests.h 文件 與 ThreadTest.cpp 文件。測試用例詳見 dynamic_app.cpp 文件。這一測試工程需依賴 dynamic.dll
與 test_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
功能測試。庫中用三種方式(malloc
、new
、new[]
)分別產生 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 2008
,VC
版本號為VC9.0
。 - 文件
vldmfc_vs10.sln
對應Visual Studio 2010
,VC
版本號為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
功能測試。庫中用三種方式(new
、CString initialisation with string
、new[]
)產生一共 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
創建線程)、多種分配方式(例如 new
、malloc
、HeapAlloc
等)、不同遞歸深度、隨機分配記憶體、隨機釋放記憶體時,VLD
能否按需正確檢測出記憶體泄漏(測試過程中也會隨機地配對使用 VLDDisable
與 VLDRestore
忽略一些泄漏,詳見 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.dll
與 vld_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.vcxproj
與 vld.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
庫項目、測試項目、示例項目,如下圖所示:
各項目的簡要介紹見下表,可以根據項目文件夾名稱上翻本文章到介紹處。
標號 | 項目名稱 | 對應文件夾名稱 | 項目簡介 |
---|---|---|---|
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
庫項目、測試項目、示例項目,文件名中的 wo
是 without
的簡寫,表示沒有 MFC
相關的測試項目(除了沒有 test_mfc
、ComTest
、vldmfc
這三個項目外,其他地方與 vld_vs14.sln
一樣),如下圖所示:
本文作者:木三百川
本文鏈接:https://www.cnblogs.com/young520/p/17343785.html
版權聲明:本文系博主原創文章,著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請附上出處鏈接。遵循 署名-非商業性使用-相同方式共用 4.0 國際版 (CC BY-NC-SA 4.0) 版權協議。