2010年4月13日 星期二

偵測記憶體洩漏 Visual Leak Detector

寫程式難免會遇到記憶體洩漏, 那是個大條且又會讓人頭痛的問題, 所幸的是現在有一些工具可以使用, 如 Dev Partner Studio, GlowCode...等等, 不過這些大都是商業軟體居多, 而 Visual C++ 本身也是有偵測記憶體洩漏的函式可以使用, 但是使用起來比較繁鎖, 現在有一個 OpenSource 的專案叫 Visual Leak Detector, 可以很容易的解決這個問題.

下面將簡單的介紹 Visual Leak Detector :

<安裝及環境設定>

  1. 先至 官網 下載檔案, 解壓縮後並安裝檔案.
  2. 設定檔, 從 [開始] > [程式集] > [Visual Leak Detector] > [Confifure], 然後會開啟一個 vld.ini.

下面列出 vld.ini 比較會需要使用到的參數, 詳細的說明可以在說明檔中找到,

  • ReportEncoding : 若回報資訊輸出至檔案, 檔案內文所使用的編碼方式, ascii, unicode.
  • ReportFile : 若回報資訊輸出至檔案, 輸出的檔案名稱.
  • ReportTo : 回報資訊輸出至何處, debugger 為 Visual Studio 除錯視窗, file 為檔案, both 為兩者都輸出.
  • StartDisabled : 載入時先關閉記憶體洩漏偵測, 有需要時再自行開啟.

使用 Windows7 時可能因為權限因素無法儲存 vld.ini, 請先將檔案複製到別處, 改完之後再複製到原目錄下.

3. 設定目錄, [工具] > [選項] > [專案和方案] > [VC++ 目錄], 在 [Include 檔案] 設置安裝目錄的 Include 目錄, 在 [程式庫檔] 設置安裝目錄的 Lib 目錄


<專案及原始碼>

  1. 若沒有 precompiled header 的話, 在每個檔案前都必須 include "vld.h", 若有 precompiled header, 如 stdafx.h, 則只要在最前面 include "vld.h" 即可, 不需每個檔案都有.
  2. 專案設定中, 設定 link vld.lib.


<其它>

  1. vld 只在 Debug 模式才有效用.
  2. 在原始碼中可以任意呼叫 VLDEnable() 或 VLDDisable() 開始或關閉 vld 的功能.

沒有留言:

張貼留言