分析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、 动态开关、实时输出大内存分析报告

JustHost:俄罗斯/新西伯利亚vps,512MB内存/5GB空间/不限流量/200Mbps/KVM/自由更换IP,$1.57/月

justhost怎么样?justhost是一家俄罗斯主机商,2006年成立,提供各种主机服务,vps基于kvm,有HDD和SSD硬盘两种,特色是200Mbps不限流量(之前是100Mbps,现在升级为200Mbps)。下面是HDD硬盘的KVM VPS,性价比最高,此外还有SSD硬盘的KVM VPS,价格略高。支持Paypal付款。国内建议选择新西伯利亚或者莫斯科DataLine。支持Paypal付...

阿里云金秋上云季,云服务器秒杀2C2G5M年付60元起

阿里云(aliyun)在这个月又推出了一个金秋上云季活动,到9月30日前,每天两场秒杀活动,包括轻量应用服务器、云服务器、云数据库、短信包、存储包、CDN流量包等等产品,其中Aliyun轻量云服务器最低60元/年起,还可以99元续费3次!活动针对新用户和没有购买过他们的产品的老用户均可参与,每人限购1件。关于阿里云不用多说了,国内首屈一指的云服务器商家,无论建站还是学习都是相当靠谱的。活动地址:h...

MineServer:香港CMI/洛杉矶GIA VPS,2核/2GB内存/20GB NVME/3.5TB流量/200Mbps/KVM,288元/年

mineserver怎么样?mineserver是一家国人商家,主要提供香港CN2 KVM VPS、香港CMI KVM VPS、日本CN2 KVM VPS、洛杉矶cn2 gia端口转发等服务,云服务器网(yuntue.com)介绍过几次,最近比较活跃。现在新推出了3款特价KVM VPS,性价比高,香港CMI/洛杉矶GIA VPS,2核/2GB内存/20GB NVME/3.5TB流量/200Mbps...

内存检测工具为你推荐
注册域名注册域名要提交什么资料?美国vps服务器美国VPS服务器中,Linode和FDC哪个好? 哪个更快更稳定域名空间代理哪里的域名空间商比较好?租服务器租服务器是什么意思?代理主机如何将我工作的电脑设置为代理主机 让我回家以后可以用家里的电脑连接店里的主机访问网络美国vps租用香港VPS:那里有租用香港VPS或者美国的VPS美国网站空间论坛选择空间可以选美国网站空间吗?深圳网站空间深圳网站设计 哪家好一些?什么是虚拟主机什么是“虚拟主机”?请解释祥细些!1g虚拟主机想买个1G虚拟主机,不限流量的,但不知道哪个建站网站靠谱,求推荐!
域名买卖 cn域名价格 日本私人vps 域名备案批量查询 vmsnap3 mediafire下载 12u机柜尺寸 css样式大全 警告本网站 商家促销 双拼域名 秒杀汇 亚马逊香港官网 卡巴斯基破解版 国外视频网站有哪些 美国盐湖城 韩国代理ip smtp服务器地址 什么是web服务器 cdn网站加速 更多