說明 使用 VLD 記憶體泄漏檢測工具輔助開發時整理的學習筆記。本篇介紹 VLD 源碼的調試。同系列文章目錄可見 《記憶體泄漏檢測工具》目錄 1. VLD 庫源碼調試步驟 以 vld2.5.1 版本為例,下載源碼 後,源碼包中各文件的用途可看本人另一篇博客 【VLD】源碼文件概覽。使用 VLD 進行泄漏 ...
說明
使用 VLD 記憶體泄漏檢測工具輔助開發時整理的學習筆記。本篇介紹 VLD 源碼的調試。同系列文章目錄可見 《記憶體泄漏檢測工具》目錄
目錄1. VLD 庫源碼調試步驟
以 vld2.5.1
版本為例,下載源碼 後,源碼包中各文件的用途可看本人另一篇博客 【VLD】源碼文件概覽。使用 VLD
進行泄漏檢測時,有時候會出現突然崩潰、退出時沒有列印以下提示信息等情況,此時就可以調試一下 VLD
的源碼,查一查是哪裡出了問題。
Visual Leak Detector is now exiting.
與其他 DLL
的調試方法一樣,VLD
源碼調試遵循以下步驟(參考 MSDN - how-to-debug-from-a-dll-project)。
1.1 設置為啟動項目
使用 VS2015
打開 vld_vs14.sln
,將 vld
設置為啟動項目。
1.2 設置調試程式
進入 vld 屬性頁 -> 配置屬性 -> 調試 頁面。選擇 Debug
模式,選擇 本地 Windows 調試器,根據自己需求設置調試程式與調試程式的啟動參數。點擊確定。
這個 命令 就是指調用 vld.dll
的程式(被稱為調試程式)所在路徑,我的是 E:\Cworkspace\VSDemo\testVLD\Debug\testVLD.exe
,如果這個調試程式需要額外的參數,就把參數填寫在下一行 命令參數 中,沒有參數空著就好。
1.3 設置輸出目錄
進入 vld 屬性頁 -> 配置屬性 -> 常規 頁面。選擇 Debug
模式,根據自己需求設置輸出目錄。點擊確定。
設置為調試程式的同一級目錄,我的是 E:\Cworkspace\VSDemo\testVLD\Debug
,由於 vld_vs14.sln
的路徑為 E:\Cworkspace\VSDemo\vld-master
,因此這裡顯示為相對路徑。
1.4 拷貝 vld 依賴文件
將 vld
安裝目錄中的 dbghelp.dll
與 Microsoft.DTfW.DHL.manifest
這兩個文件拷貝至調試程式的同一級目錄,我的是 E:\Cworkspace\VSDemo\testVLD\Debug
,要註意是 Win32
還是 x64
,拷對應的才行。
1.5 加斷點調試
至此,就可以開始調試了,不妨在 VisualLeakDetector
類的構造函數中加一個斷點,點擊 本地 Windows 調試器 開始調試(或者按 F5
),程式成功停在了斷點處。
2. 註意事項
調試時,有以下幾點需註意:
vld
源碼生成的vld.dll
與調試程式所引用的vld.dll
必須是同一路徑下的同一個文件,這也是要重新設置vld
輸出目錄的原因。為確保調試程式運行時能正確找到vld
生成的dll
,可以將vld
輸出目錄設置為調試程式所在目錄,或者為Path
環境變數的某個目錄(例如 vld 安裝目錄的 bin 子目錄下)。vld
的依賴文件dbghelp.dll
與Microsoft.DTfW.DHL.manifest
也應該放在調試程式能找到的地方。- 平臺位數必須一致,
Win32
時都必須得是Win32
,x64
時都必須得是x64
。 - 調試程式必須能找到它所依賴的其他環境(比如
xx.dll
)。特別是 QT 開發的調試程式,其依賴的Qt DLL
比較多,直接運行時會提示缺失某某DLL
。 - 調試程式與
DLL
都必須是Debug
版本。
本文作者:木三百川
本文鏈接:https://www.cnblogs.com/young520/p/17379196.html
版權聲明:本文系博主原創文章,著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請附上出處鏈接。遵循 署名-非商業性使用-相同方式共用 4.0 國際版 (CC BY-NC-SA 4.0) 版權協議。