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

内存检测工具  时间:2021-01-12  阅读:()

vld内存泄露检测工具介绍及基本原理分析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

版权免费、开源

用途检测windowsc/c++程序内存泄露并且输出详细报告

二、 vld使用方法介绍

使用步骤

1、 集成到工程

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

2、 运行程序

运行环境 debughelp.dl l,vld.dl l,vld. ini

3、 执行测试用例

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

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

使用举例

源码

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

注意报告还可以输出到txt文件默认名称为m emory_leak_report.txt 配置文件vld. ini说明

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

1开启或关闭内存测试

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

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

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

原理分析分析与思考

关键技术windows和l inux上的原理差不多 Linux上的实现相对可能要简单一些。需要以下知识

1、 apihook

2、 PE文件知识

2、程序执行过程装载、执行、卸载流程

3、输出函数调用栈

普通程序和vld

钩子程序分析

一 内存申请过程

VLD钩子源码

二 内存释放过程

VLD钩子源码

优缺点分析与改进

优缺点

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

缺点

1、 程序运行性能受影响

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

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

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

2、 将Vld从工程中分离

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

rfchost:洛杉矶vps/双向CN2 GIA,1核/1G/10G SSD/500G流量/100Mbps/季付$23.9

rfchost怎么样?rfchost是一家开办了近六年的国人主机商,一般能挺过三年的国人商家,还是值得入手的,商家主要销售VPS,机房有美国洛杉矶/堪萨斯、中国香港,三年前本站分享过他家堪萨斯机房的套餐。目前rfchost商家的洛杉矶机房还是非常不错的,采用CN2优化线路,电信双程CN2 GIA,联通去程CN2 GIA,回程AS4837,移动走自己的直连线路,目前季付套餐还是比较划算的,有需要的可...

Dynadot COM特价新注册48元

想必我们有一些朋友应该陆续收到国内和国外的域名注册商关于域名即将涨价的信息。大概的意思是说从9月1日开始,.COM域名会涨价一点点,大约需要单个9.99美元左右一个。其实对于大部分用户来说也没多大的影响,毕竟如今什么都涨价,域名涨一点点也不要紧。如果是域名较多的话,确实增加续费成本和注册成本。今天整理看到Dynadot有发布新的八月份域名优惠活动,.COM首年注册依然是仅需48元,本次优惠活动截止...

AlphaVPS(€3.99/月)VPS年付15欧,AMD EYPC+NVMe系列起

AlphaVPS是一家保加利亚本土主机商(DA International Group Ltd),提供VPS主机及独立服务器租用等,数据中心包括美国(洛杉矶/纽约)、德国、英国和保加利亚等,公司办公地点跟他们提供的保加利亚数据中心在一栋楼内,自有硬件,提供IPv4+IPv6,支持PayPal或者信用卡等方式付款。商家提供的大硬盘VPS主机,提供128GB-2TB磁盘,最低年付15欧元起,也可以选择...

内存检测工具为你推荐
国内域名注册预留的国内(cn)域名申请方法全能虚拟主机那家虚拟主机服务商比较不错,比较有名?海外主机美国主机哪个好,最好是速度和稳定性能跟得上?网站域名网站域名是什么域名注册查询如何知道域名注册信息?域名购买域名购买的流程是什么?香港虚拟空间请大哥帮个忙,介绍可靠的香港虚拟主机?php虚拟空间php虚拟主机空间如何连接mysql成都虚拟空间成都市规划信息技术中心如何?100m网站空间100M的最好的网站空间价格多少?
移动服务器租用 中文国际域名 godaddy域名解析 rak机房 debian6 有益网络 新天域互联 谁的qq空间最好看 免费申请个人网站 hkt 空间登录首页 美国凤凰城 英国伦敦 免费网络空间 中美互联网论坛 发证机构 gotoassist 卡巴斯基官方下载 赵荣博客 灵动:鬼影实录 更多