通過DT10檢測記憶體洩漏問題

創提科技
2021/09/24

分享到

DT10是新一代的動態測試工具,可以長時間跟蹤記錄目的程式執行情況,獲取目的程式動態執行資料,説明進行難於重現的Bug錯誤分析,覆蓋率檢測,性能測試,變數跟蹤等等功能。
 
C/C++代碼中,記憶體洩漏一直是開發人員最頭痛的問題之一,本文介紹如何通過DT10説明使用者查找記憶體洩露問題。
 
請看如下代碼片段,代碼中有使用malloc和free函數進行記憶體分配和釋放,為演示DT10如何説明我們檢測記憶體洩漏,以下面代碼為例。


7.jpg

 
DT10中創建一個工程,如下圖:


8.jpg

 
DT10可自動插入測試點,而對於記憶體洩漏檢測,目前支援手工插入測試點,插入方式如下:

 
在malloc函數後點擊右鍵,選擇Insert Test Point -> Normal Step,並在free函數之後,以同樣的方式插入測試點,測試點插入之後,如下圖:


9.jpg

 
然後重新構建工程並執行,使用DT10收集測試結果,收集之後得到的Malloc函數和Free函數執行次數,使用者只需判斷Malloc的次數和Free次數是否一致即可知道是否存在記憶體洩漏,從而説明使用者檢測C/C++代碼中的一些記憶體洩漏問題。如下圖:malloc被調用100次,但free只調用1次,那麼顯然這段代碼存在記憶體洩漏問題。


10.jpg