以 LabWindows™/CVI 偵測記憶體洩漏

內容

介紹

C 程式設計語言的強項之一,就是能夠讓工程師以低階控制功能進行程式碼最佳化。  由於 C 程式設計語言能直接存取應用程式記憶體與特定硬體函式呼叫,因此,工程師通常更能夠掌控程式大小與執行速度。

不過,許多教科書也因為 C 的功能與彈性而探討起記憶體管理作業的複雜程度。  其中一本教科書中就提到:

造成錯誤與當機的主要原因,大多在於記憶體存取、配置及解除配置。要解決這類因記憶體所引發的錯誤極其不易。專業工程師大多必須等到實際遭遇錯誤引發的問題時,才能徹底了解原因。

為避免工程師在部署應用程式之後才發現記憶體洩漏問題,LabWindows/CVI 9.0 提供 Resource Tracking Window 這項新的工具,能支援工程師在開發過程中儘早發現並修正記憶體洩漏問題。

Resource Tracking Window 概述

過去 10 多年來,LabWindows/CVI 提供自動化陣列界限檢查功能,適用於找出可能造成意外操作的記憶體錯誤。  LabWindows/CVI 以非 C 語言標準配備的進階使用者保護功能為基礎,現在進一步提供 Resource Tracking Window 整合式工具,能用於找出降低系統效能的潛在因素。

只有 LabWindows/CVI 完整版開發系統與開發套件提供新的 Resource Tracking Window,這項工具能記錄並追蹤執行期間配置的所有相關資源,包括動態記憶體、檔案控制代碼 (File handle)、面板、GPIB/TCP 控制代碼,以及執行緒集區。這項工具能支援您輕鬆取得來源程式碼、檢視記憶體、解除配置 (Deallocation),以及將資源追蹤目標記錄於磁碟中,以利後續檢視。

Build Options (建立選項) 對話框的 Debugging Options (除錯選項) 區段中選擇 Extended (延伸除錯),就能啟用互動式的資源追蹤功能。此外也可以使用公用程式庫 (Utility Library) 中的 GetEnableResourceTracking 與 SetEnableResourceTracking 函式,運用程式設計方式啟用/停用資源追蹤功能。

使用 Resource Tracking Window

Resource Tracking Window 的 Resources 欄會同時顯示您在程式中配置的配置與解除配置資源。LabWindows/CVI 會以紅色文字顯示剛配置完畢的資源,黑色文字代表現有的配置資源,而灰色文字則是剛解除配置的資源。也可以根據類型配置資源,如記憶體、工具箱、使用者介面資源等等。連按兩下 Resources 欄中的資源會直接跳到該項資源在來源程式碼中的配置位置。進行資源配置時,Resource Tracking Window 的 Stack Trace (堆疊追蹤) 區段會顯示函式的呼叫堆疊,清單由上而下依序顯示最近呼叫過的函式到最初呼叫的函式。

資源追蹤功能一體適用於延伸及標準除錯層級。在 Build Options (建立選項) 對話框的 Debugging Options (除錯選項) 區段中選擇 Extended (延伸除錯),預設啟用資源追蹤功能。若選擇 Standard (標準),則必須使用 SetEnableResourceTracking 函式啟用資源追蹤。

要檢視 Resource Tracking Window,可在 LabWindows/CVI 有效視窗中選擇 Window » Resource Tracking (視窗 » 資源追蹤)。在 Resource Tracking Window 的 Resources (資源) 欄位按一下滑鼠右鍵,會顯示含下列選項的內容輔助功能表:

  • Go to Source (移動到來源) — 在「Source」(來源) 視窗中強調資源配置位置。
  • View Memory (檢視記憶體) — 開啟 Memory Display (記憶體顯示) 視窗並顯示對應於所選項目的記憶體內容。
  • Break on Deallocation (因解除配置而暫停) — 註明 LabWindows/CVI 因解除配置資源而暫停程式。
  • Show/Hide Thread ID (顯示/隱藏執行序 ID) — 顯示或隱藏 Resource Tracking Window 中的 Thread ID (執行序 ID) 這一欄。
  • Clear Window (清除視窗) — 移除 Resource Tracking Window 中的所有項目。
  • Load from File (自檔案載入) — 載入之前儲存的檔案。
  • Save to File (儲存至檔案) — 將 Resource Tracking Window 中現有的內容儲存成文字檔,以供後續使用。
  • Sort (排序) — 開啟 Sort Tree (排序樹狀結構) 對話框,使用這個對話框即可在 Resource Tracking Window 中進行資源排序。
  • Find (尋找) — 開啟 Find (尋找) 對話框,使用這個對話框即可在欄位中搜尋相關內容。
  • Expand Resource (展開資源) — 展開資源類別。
  • Collapse Resource (收合資源) — 收合資源類別。
  • Expand ALL (全部展開) — 展開所有資源類別。
  • Collapse ALL (全部收合) — 收合所有資源類別。
  • Release Window/Confine Window (解除限制視窗/限制視窗) — LabWindows/CVI 會根據 Resource Tracking Window 在 Window Confinement Region (視窗限制區域) 與否而顯示不同的選項。Release Window (解除限制視窗) 命令會將視窗從 Window Confinement Region (視窗限制區域) 中移除。Confine Window (限制視窗) 命令會將視窗限制在 Window Confinement Region (視窗設定區域) 範圍中。

若在 Resource Tracking Window 的 Stack Trace (堆疊追蹤) 區段按一下滑鼠右鍵,會顯示含下列選項的內容輔助功能表:

  • Go to Source (移動到來源) — 在 Source (來源) 視窗中強調所選函式的位置。
  • Find (尋找) — 開啟 Find (尋找) 對話框,使用這個對話框即可在欄位中搜尋相關內容。

若在 Resource Tracking Window 的分頁按一下滑鼠右鍵,會顯示含下列選項的內容輔助功能表:

  • Close (關閉) — 關閉視窗。
  • Release Window (解除視窗) — 將該視窗從 Debugging Region (除錯區域) 中移除。

由於資源追蹤功能會對系統造成額外負載,因此,啟用該項功能或多或少會影響程式效能。

其他資源

體驗 LabWindows/CVI

LabWindows/CVI 使用說明

LabWindows 標誌經 MICROSOFT CORPORATION 授權使用。Windows 是 Microsoft Corporation 在美國和其他國家/地區的註冊商標。

Was this information helpful?

Yes

No