【Visual Leak Detector】源碼調試 VLD 庫

来源:https://www.cnblogs.com/young520/archive/2023/05/07/17379196.html
-Advertisement-
Play Games

說明 使用 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 設置為啟動項目。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”

1.2 設置調試程式

進入 vld 屬性頁 -> 配置屬性 -> 調試 頁面。選擇 Debug 模式,選擇 本地 Windows 調試器,根據自己需求設置調試程式與調試程式的啟動參數。點擊確定。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”

這個 命令 就是指調用 vld.dll 的程式(被稱為調試程式)所在路徑,我的是 E:\Cworkspace\VSDemo\testVLD\Debug\testVLD.exe,如果這個調試程式需要額外的參數,就把參數填寫在下一行 命令參數 中,沒有參數空著就好。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”

1.3 設置輸出目錄

進入 vld 屬性頁 -> 配置屬性 -> 常規 頁面。選擇 Debug 模式,根據自己需求設置輸出目錄。點擊確定。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”

設置為調試程式的同一級目錄,我的是 E:\Cworkspace\VSDemo\testVLD\Debug,由於 vld_vs14.sln 的路徑為 E:\Cworkspace\VSDemo\vld-master,因此這裡顯示為相對路徑。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”

1.4 拷貝 vld 依賴文件

vld 安裝目錄中的 dbghelp.dllMicrosoft.DTfW.DHL.manifest 這兩個文件拷貝至調試程式的同一級目錄,我的是 E:\Cworkspace\VSDemo\testVLD\Debug,要註意是 Win32 還是 x64,拷對應的才行。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”

1.5 加斷點調試

至此,就可以開始調試了,不妨在 VisualLeakDetector 類的構造函數中加一個斷點,點擊 本地 Windows 調試器 開始調試(或者按 F5),程式成功停在了斷點處。

Oh Shit!-圖片走丟了-打個廣告-歡迎來博客園關註“木三百川”

2. 註意事項

調試時,有以下幾點需註意:

  • vld 源碼生成的 vld.dll 與調試程式所引用的 vld.dll 必須是同一路徑下的同一個文件,這也是要重新設置 vld 輸出目錄的原因。為確保調試程式運行時能正確找到 vld 生成的 dll,可以將 vld 輸出目錄設置為調試程式所在目錄,或者Path 環境變數的某個目錄(例如 vld 安裝目錄的 bin 子目錄下)
  • vld 的依賴文件 dbghelp.dllMicrosoft.DTfW.DHL.manifest 也應該放在調試程式能找到的地方。
  • 平臺位數必須一致,Win32 時都必須得是 Win32x64 時都必須得是 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) 版權協議。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 環境:CentOS 7.6_x64 FreeSWITCH版本 :1.10.9 Python版本:3.9.12 一、背景描述 PCM(Pulse Code Modulation,脈衝編碼調製)音頻數據是未經壓縮的音頻採樣數據,它是由模擬信號經過採樣、量化、編碼轉換成的標準數字音頻數據。 在FreeSW ...
  • 架構介紹 系統組件 CAS伺服器和客戶端構成了CAS系統體繫結構的兩個物理組件,它們通過各種協議進行通信。 CAS伺服器 CAS伺服器是基於Spring Framework構建的Java servlet,其主要職責是通過簽發和驗證ticket來驗證用戶並授予對啟用CAS認證了的服務(通常稱為CAS客 ...
  • pandas中用來承載數據的兩個最重要的結構分別是: Series:相當於增強版的一維數組 DataFrame:相當於增強版的二維數組 pandas最大的優勢在於處理表格類數據,如果數據維度超過二維,一般我們會使用另一個 python的庫 numpy。 本篇主要介紹這兩種核心數據結構的創建方式。 1 ...
  • 概述 由於gpt比較火爆,可以幫我們寫文章、寫代碼等,本文將製作屬於我們自己的ai助手,無需翻牆, 準備工作 在萬能的某寶購買open ai的apikey,直接搜索apikey即可找到 下載Andlua+軟體,在後臺回覆【andlua】即可獲得下載鏈接 最終效果 代碼實現 main.lua主要代碼 ...
  • 過去若幹年,一邊工作編程,一邊思考提煉,寫了一些關於“寫整潔業務代碼”的文章,在隨筆分類“代碼修行”下。有一天在公司文檔空間分享時,突然想到:可以製作一本電子書,將過往的重要經驗總結起來,也是對自己十年編程生涯的一個階段性回顧,作為繼續前進的階梯。 我的第一本電子書 書名:《代碼修行:一步一步寫出整 ...
  • 我們在項目開發中,經常會對一些參數進行校驗,比如非空校驗、長度校驗,以及定製的業務校驗規則等,如果使用if/else語句來對請求的每一個參數一一校驗,就會出現大量與業務邏輯無關的代碼,繁重不堪且繁瑣的校驗,會大大降低我們的工作效率,而且準確性也無法保證。為保證數據的正確性、完整性,前後端都需要進行數 ...
  • 淺聊JVM--基礎版 一、來源 jvm共有三種 Sun公司: HotSpot使用最多 BEA:JRockit IBM:J9VM ​ 今天我們主要瞭解的是Sun公司的HotSpot(關於HotSpot的愛恨情仇這裡就不做過多解釋了。)我們以前測試jdk是否安裝成功,java的環境變數是否配置成功會使用 ...
  • 本文首發於公眾號:Hunter後端 原文鏈接:Django筆記三十七之多資料庫操作(補充版) 這一篇筆記介紹一下 Django 里使用多資料庫操作。 在第二十二篇筆記中只介紹了多資料庫的定義、同步命令和使用方式,這一篇筆記作為補充詳細介紹如何對 Django 系統的多個資料庫進行針對的建表同步操作。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...