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

pacificrack:$12/年-1G内存/1核/20gSSD/500g流量/1Gbps带宽

pacificrack在最新的7月促销里面增加了2个更加便宜的,一个月付1.5美元,一个年付12美元,带宽都是1Gbps。整个系列都是PR-M,也就是魔方的后台管理。2G内存起步的支持Windows 7、10、Server 2003\2008\2012\2016\2019以及常规版本的Linux!官方网站:https://pacificrack.com支持PayPal、支付宝等方式付款7月秒杀VP...

HostSailor:罗马尼亚机房,内容宽松;罗马尼亚VPS七折优惠,罗马尼亚服务器95折

hostsailor怎么样?hostsailor成立多年,是一家罗马尼亚主机商家,机房就设在罗马尼亚,具说商家对内容管理的还是比较宽松的,商家提供虚拟主机、VPS及独立服务器,今天收到商家推送的八月优惠,针对所有的产品都有相应的优惠,商家的VPS产品分为KVM和OpenVZ两种架构,OVZ的比较便宜,有这方面需要的朋友可以看看。点击进入:hostsailor商家官方网站HostSailor优惠活动...

IntoVPS:按小时计费KVM月费5美元起($0.0075/小时),6个机房可选

IntoVPS是成立于2004年的Hosterion SRL旗下于2009年推出的无管理型VPS主机品牌,商家提供基于OpenStack构建的VPS产品,支持小时计费是他的一大特色,VPS可选数据中心包括美国弗里蒙特、达拉斯、英国伦敦、荷兰和罗马尼亚等6个地区机房。商家VPS主机基于KVM架构,最低每小时0.0075美元起($5/月)。下面列出几款VPS主机配置信息。CPU:1core内存:2GB...

内存检测工具为你推荐
asp主机请问虚似主机和Asp服务器软件都是一个意思吗国外域名注册如何注册国外域名?海外服务器租用国外服务器租用与国内服务器有哪些区别vpsvps什么意思asp主机空间asp空间是什么免费vps服务器免费服务器有哪些台湾vps虚拟主机,VPS,服务器,其中哪个流量最大?jsp虚拟空间JSP虚拟目录及虚拟路径的配置方法美国网站空间美国,韩国,香港网站空间深圳虚拟主机深圳有哪些比较有名气的网络推广公司
绍兴服务器租用 linode代购 免费博客空间 网通代理服务器 e蜗牛 200g硬盘 网通服务器托管 中国电信宽带测速网 789电视剧 512mb 监控服务器 全能空间 成都主机托管 杭州电信 免费赚q币 发证机构 wannacry勒索病毒 火山互联 byebyelove ddos攻击工具 更多