說明
使用 VLD 記憶體泄漏檢測工具輔助開發時整理的學習筆記,本篇對 VLD 原始碼包中的各檔案用途做個概述,同系列文章目錄可見 《記憶體泄漏檢測工具》目錄
目錄- 說明
- 1. 整體概覽
- 2. 檔案夾 .teamcity
- 3 檔案夾 lib
- 3.1 檔案夾 cppformat(生成 libformat)
- 3.2 檔案夾 dbghelp
- 3.3 檔案夾 gtest(生成 libgtest)
- 4 檔案夾 mfc_detect(vld 輔助工程)
- 5 檔案夾 setup
- 5.1 檔案夾 dbghelp
- 5.2 檔案夾 editenv
- 5.3 檔案 build_version.bat
- 5.4 檔案 license-free.txt
- 5.5 檔案 modpath.iss
- 5.6 檔案 version.h
- 5.7 檔案 vld-setup.iss
- 5.8 檔案 WizSmallImage.bmp
- 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 個檔案
- 7.1 檔案 .editorconfig
- 7.2 檔案 .gitignore
- 7.3 檔案 .mailmap
- 7.4 檔案 appveyor.yml
- 7.5 檔案 AUTHORS.txt
- 7.6 檔案 CHANGES.txt
- 7.7 檔案 change_toolset.ps1
- 7.8 檔案 COPYING.txt
- 7.9 檔案 README.md
- 7.10 檔案 vld.ini
- 7.11 檔案 vld_vs14.sln
- 7.12 檔案 vld_vs14_wo_mfc.sln
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
這個檔案用來統一代碼樣式,幫助開發者維護編輯器編碼風格,以下幾個資料對理解該檔案的作用有幫助:
- 牧之博客-.editorconfig 檔案,
- Microsoft-使用 EditorConfig 創建可移植的自定義編輯器設定,
- EditorConfig,
7.2 檔案 .gitignore
這個檔案用來指明原始碼上傳 Git 時,哪些檔案應該被忽略,這些檔案無需納入 Git 管理,Github-gitignore 上有一些 .gitignore 檔案模板,需要時可以拿來用,
7.3 檔案 .mailmap
這個檔案用于將作者姓名和電子郵件映射到單個規范值,以下幾個資料對理解該檔案的作用有幫助:
- 騰訊云開發者社區-如何使用git .mailmap顯示作者組織?,
- w3cschool-git-check-mailmap,
7.4 檔案 appveyor.yml
這個檔案用于持續集成服務,自動構建專案,以下幾個資料對理解該檔案的作用有幫助:
- appveyor-docs,
- 51CTO博客-使用Appveyor持續集成博客,
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) 著作權協議,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/550853.html
標籤:其他
上一篇:Java學習(1)
下一篇:返回列表
