vld内存泄露检测工具介绍及基本原理分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

vld介绍及基本原理分析

作者:何锟

目录

内容导读 (2)

一、vld简介 (2)

二、vld使用方法介绍 (2)

使用步骤 (2)

使用举例 (2)

配置文件(vld.ini)说明 (3)

原理分析分析与思考 (4)

关键技术 (4)

流程分析 (4)

钩子程序分析 (5)

优缺点分析与改进 (6)

优缺点: (6)

改进思考 (6)

内容导读

本文分包括这几个部分:

1、Vld简介

2、Vld使用方法介绍

3、vld原理分析分析

4、vld优缺点分析与改进

一、vld简介

vld全称:Visual Leak Detector

发展历史:2005年~ 2016年,Version 2.5.0

版权:免费、开源

用途:检测windows c/c++程序内存泄露,并且输出详细报告

二、vld使用方法介绍

使用步骤

1、集成到工程

在工程任意位置包含头文件”vld.h”、并且指定静态库路径”vld.lib”,编译时需要宏_DEBUG或VLD_FORCE_ENABLE

2、运行程序

运行环境:debughelp.dll, vld.dll,vld.ini

3、执行测试用例

4、关闭程序时生成了内存测试报告(文本文件或IDE输出窗口)

5、根据报告分析内存泄露

使用举例

源码

编译运行后,可以看到IDE的输出窗口中输出内容

注意:报告还可以输出到txt文件,默认名称为memory_leak_report.txt 配置文件(vld.ini)说明

Vld.ini里面有详细的说明。其中常用的选项有:

1:开启或关闭内存测试

2:报告中是否去掉重复的堆栈

3:函数调用栈的最大深度

4:泄露内存打印的字节数

原理分析分析与思考

关键技术

windows 和linux 上的原理差不多,Linux 上的实现相对可能要简单一些。需要以下知识: 1、 api hook 2、 PE 文件知识

2、程序执行过程(装载、执行、卸载流程)

3、输出函数调用栈

(普通程序和vld

钩子程序分析(一)内存申请过程

VLD钩子源码:

(二)内存释放过程

VLD钩子源码:

优缺点分析与改进

优缺点:

优点:方法简单、无需太多编码,并且能输出完整的函数调用栈

缺点:

1、程序运行性能受影响

2、需要将vld编译到目标工程中

3、当存在嵌套内存申请时,有时候只忘记了一个delete,但是报告了很多嵌套的泄露改进思考

1、改进源码进行性能优化

2、将Vld从工程中分离

3、动态开关、实时输出大内存分析报告

相关文档
最新文档