通过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