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

妮妮云(100元/月)阿里云香港BGP专线 2核 4G

妮妮云的来历妮妮云是 789 陈总 张总 三方共同投资建立的网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑妮妮云的市场定位妮妮云主要代理市场稳定速度的云服务器产品,避免新手购买云服务器的时候众多商家不知道如何选择,妮妮云就帮你选择好了产品,无需承担购买风险,不用担心出现被跑路 被诈骗的情况。妮妮云的售后保证妮妮云退款 通过于合作商的友好协商,云服务器提供2天内全额退款,超过2天不退款 物...

Dynadot多种后缀优惠域名优惠码 ,.COM域名注册$6.99

Dynadot 是一家非常靠谱的域名注册商家,老唐也从来不会掩饰对其的喜爱,目前我个人大部分域名都在 Dynadot,还有一小部分在 NameCheap 和腾讯云。本文分享一下 Dynadot 最新域名优惠码,包括 .COM,.NET 等主流后缀的优惠码,以及一些新顶级后缀的优惠。对于域名优惠,NameCheap 的新后缀促销比较多,而 Dynadot 则是对于主流后缀的促销比较多,所以可以各取所...

Contabo美国独立日促销,独立服7月€3.99/月

Contabo自4月份在新加坡增设数据中心以后,这才短短的过去不到3个月,现在同时新增了美国纽约和西雅图数据中心。可见Contabo加速了全球布局,目前可选的数据中心包括:德国本土、美国东部(纽约)、美国西部(西雅图)、美国中部(圣路易斯)和亚洲的新加坡数据中心。为了庆祝美国独立日和新增数据中心,自7月4日开始,购买美国地区的VPS、VDS和独立服务器均免设置费。Contabo是德国的老牌服务商,...

内存检测工具为你推荐
美国vps服务器美国Vps 哪里的稳定,服务好,不是代购,主要是我新手,不太懂域名代理怎么通过域名赚钱php虚拟空间虚拟空间怎么修改php.ini配置网站空间购买不用备案的网站空间,哪里可以有这样的网站空间购买?国外网站空间国内空间 美国空间 香港空间相比较,哪个好?虚拟主机是什么什么是虚拟主机虚拟主机服务商请问哪个服务商的虚拟主机比较好呀下载虚拟主机电脑虚拟机怎么弄论坛虚拟主机我要做个论坛,是用虚拟主机呢?还是用空间?除论坛外还有好及个单页,还带数据库。广西虚拟主机网站icp备案流程
虚拟主机软件 外贸主机 godaddy续费优惠码 godaddy域名转出 debian7 轻量 商务主机 绍兴高防 dd444 炎黄盛世 新天域互联 工作站服务器 无限流量 免费外链相册 www789 东莞服务器托管 国外的代理服务器 注册阿里云邮箱 域名和主机 阿里云邮箱个人版 更多