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

ProfitServer$34.56/年,西班牙vps、荷兰vps、德国vps/不限制流量/支持自定义ISO

profitserver怎么样?profitserver是一家成立于2003的主机商家,是ITC控股的一个部门,主要经营的产品域名、SSL证书、虚拟主机、VPS和独立服务器,机房有俄罗斯、新加坡、荷兰、美国、保加利亚,VPS采用的是KVM虚拟架构,硬盘采用纯SSD,而且最大的优势是不限制流量,大公司运营,机器比较稳定,数据中心众多。此次ProfitServer正在对德国VPS(法兰克福)、西班牙v...

bluehost32元/月,2核2G/20GB空间,独立ip,新一代VPS美国云主机!

bluehost怎么样?bluehost推出新一代VPS美国云主机!前几天,BlueHost也推出了对应的周年庆活动,全场海外虚拟主机月付2.95美元起,年付送免费的域名和SSL证书,通过活动进入BlueHost中文官网,购买虚拟主机、云虚拟主机和独立服务器参与限时促销。今天,云服务器网(yuntue.com)小编给大家介绍的是新一代VPS美国云主机,美国SSD云主机,2核2G/20GB空间,独立...

硅云香港CN2+BGP云主机仅188元/年起(香港云服务器专区)

硅云怎么样?硅云是一家专业的云服务商,硅云的主营产品包括域名和服务器,其中香港云服务器、香港云虚拟主机是非常受欢迎的产品。硅云香港可用区接入了中国电信CN2 GIA、中国联通直连、中国移动直连、HGC、NTT、COGENT、PCCW在内的数十家优质的全球顶级运营商,是为数不多的多线香港云服务商之一。目前,硅云香港云服务器,CN2+BGP线路,1核1G香港云主机仅188元/年起,域名无需备案,支持个...

内存检测工具为你推荐
英文域名中文域名和英文域名的区别? 越详细越好国内免费空间国内有没有好的免费空间啊美国vps主机听说美国vps主机性能不错,没用过,想听听各位的意见~ip代理地址ip代理有什么用?ip代理地址使用IP代理会有什么坏处吗?免费vps服务器免费服务器有哪些美国vps租用香港VPS:那里有租用香港VPS或者美国的VPS100m网站空间100M的最好的网站空间价格多少?便宜虚拟主机麻烦各位给我推荐一个比较便宜的虚拟主机,要质量好的。谢谢大家了100m虚拟主机万网和新网虚拟主机有100M的吗
星星海 kdata themeforest 免费个人博客 java空间 台湾谷歌网址 福建天翼加速 699美元 秒杀汇 搜索引擎提交入口 vip域名 东莞服务器 支持外链的相册 七夕快乐英语 dnspod 国内域名 日本代理ip 网站加速 cdn服务 阿里云邮箱怎么注册 更多