基于动态插桩的CC++内存泄漏检测工具的设计与实现.pdf

第32卷第6期 计 算 机 应 用 研 究 V01.32No.6

20l5年 6月 ApplicationResearchofComputers Jun.2015

基于动态插桩的C/C++内存泄漏检测

工具的设计与实现

曾佳平,杨秋辉 汪华龙,徐保平,黄 蔚

(四川大学 计算机 (软件)学院,成都 610065)

摘 要:针对c、c++程序常出现的内存泄漏、内存越界访 问、内存的不匹配释放等错误进行了研究,分析了现

有的内存错误检测工具和方法,在基于开源的动态二进制插桩框架Pin的基础上 ,采用函数族的内存信息块管

理方法和生命周期法,实现了在Linux平台下运行的内存检测工具MemGuard原型。该原型能有效地检测出内

存泄漏、内存越界访 问、内存的不匹配释放等问题,并通过与运行在Valgrind上的工具Memcheck的对比实验证

明了该原型的有效性 以及高效性。

关键词 :内存泄漏;动态二进制插桩;生命周期 ;MemGuard原型;Valgrind

中图分类号 :TP334 文献标志码:A 文章编号:1001—3695(2015)06·1737-05

doi:10.3969/j.issn.1001—3695.2015.06.030

Designandimplementationofmemoryleakdetectiontoolof

C/C++ basedondynamicinstrumentation

ZengJiaping,YangQiuhui,WangHualong,XuBaoping,HuangWei

(CollegeofComputer(Software),SwhuanUniversity,Chengdu610065,China)

Abstract:Thispaperstudiedtheissueofmemoryleak,cross.borderaccessmemory,thememory doesnotmatchtherelease

0fC orC++ program.Bystudyingtheexistingtoolsandmethods.thispaperusedthemethodofmemoryblockinformation

managementoffunction..basedfamilyandlifecycletodevelopaprototypeofmemory leakdetectiontoolMemGuardwhichwas

basedonPinofdynamicbinaryinstrumentationframeworkofopensource.Theprototypecaneffectivelydetectmemoryleaks.

cross.borderaccessmemory ,memory doesnotmatchtherelease.Finally,throughtheComparedexperimenttoMemcheckrun.

ningontheValgrindprovesthehigheffectivenessoftheprototypeofMemGuard.

Keywords:memoryleaks;dynamicbinaryinstrumentation;lifecycle;prototypeofMemGuard;Va】 nd

C、C++因其灵活性 、高效性等特点一直以来都是主流程 Pin,设计实现了一个动态内存检测工具MemGuard,能够检测

序设计语言之一。它们与Java等高级语言相 比,在编程 中程 C/C++中出现的内存泄漏 、内存访问越界、不匹配释放 、多重

序员需要自己管理内存 ,并对程序中所涉及的内存操作有很清

插桩valgrind_基于动态插桩的CC++内存泄漏检测工具的设计与实现.pdf相关推荐

  1. iOS之深入定制基于PLeakSniffer和MLeaksFinder的内存泄漏检测工具

    一.背景 在编写日常业务代码时,或多或少都会引入一些导致内存泄漏的代码,而这种行为又很难被监控,这就导致应用内存泄漏的口子越开越大,直接影响到线上应用的稳定性. 虽然 Xcode 的 Instrucm ...

  2. 基于Android Studio的内存泄漏检测与解决全攻略

    自从Google在2013年发布了Android Studio后,Android Studio凭借着自己良好的内存优化,酷炫的UI主题,强大的自动补全提示以及Gradle的编译支持正逐步取代Eclip ...

  3. 基于Android Studio的Android内存泄漏检测方法

    自从Google在2013年发布了Android Studio后,Android Studio凭借着自己良好的内存优化,酷炫的UI主题,强大的自动补全提示以及Gradle的编译支持正逐步取代Eclip ...

  4. 关于C/C++动态申请空间释放和内存泄漏问题介绍

    1. 动态申请空间 1.1 基本内容 Ⅰ 动态申请的空间没有具体名称,只能通过指针间接访问(无论new还是malloc方式). Ⅱ 动态申请空间都是存放在堆中,有别于系统自动分配的空间是存放在堆栈中( ...

  5. 基于微信小程序的智能推荐点餐系统的设计与实现.pdf

    近年来,互联网行业飞速发展,许多传统行业开始与互联网结合并通过数字化的改造.转型与升级创造出新的发展生态.尤其在国人最关注的"吃"的方面,餐饮行业通过将点餐.结算等一系列的服务流程 ...

  6. 内存信号测试软件,基于AVIA9700的SDRAM控制器实现内存时序测试软件工具的设计...

    图2 AVIA9700访问SDRAM时序示意图 要正确访问SDRAM,建立时间和保持时间很关键.建立时间在触发器采样之前,在这段时间,数据必须保持有效的时间,否则会产生setup violation; ...

  7. C++中基于Crt的内存泄漏检测

    尽管这个概念已经让人说滥了 ,还是想简单记录一下, 以备以后查询. #ifdef _DEBUG #define DEBUG_CLIENTBLOCK   new( _CLIENT_BLOCK, __FI ...

  8. el-form 动态校验规则_动态多线程敏感信息泄露检测工具

    weakfilescan 基于爬虫,动态收集扫描目标相关信息后进行二次整理形成字典规则,利用动态规则的多线程敏感信息泄露检测工具,支持多种个性化定制选项 包括: 规则字典多样化定义(支持正则.整数.字 ...

  9. 基于WinDbg的内存泄漏分析

    在前面C++中基于Crt的内存泄漏检测一文中提到的方法已经可以解决我们的大部分内存泄露问题了,但是该方法是有前提的,那就是一定要有源代码,而且还只能是Debug版本调试模式下.实际上很多时候我们的程序 ...

最新文章

  1. 如何为“选择”框创建占位符?
  2. js用函数实现输出100以内与7有关的数_用JS编写求出100以内的质数
  3. python编程if语法-Python基本语法(if判断)
  4. Elasticsearch 及 Kibana 安装篇
  5. mysql 面试知识点笔记(二)查询优化及索引越多越好吗?
  6. java保留想要的字符,反转Java中的字符,同时保留一些字符 - java
  7. SAP Fiori Elements - how to create annotation for a property
  8. 网易云音乐 linux x32,网易云音乐 for Mac
  9. android 安全管理,基于web的Android应用安全管理系统
  10. SIP信令协议消息(四)
  11. 抖音极速版自动运行脚本
  12. pointer-events用法
  13. Unity5混音器DSP插件编写教程【一】
  14. VM 虚拟机屏幕大小的调整
  15. matlab计算器设计流程图_matlab计算器的设计.doc
  16. 数据库日常之修改MySQL数据库密码的方法
  17. 【华为云技术分享】风格迁移——让你的照片秒变手绘日漫风,祝大家六一快乐!
  18. 计算机技术在数学教学中的应用,计算机技术在数学教学中的应用
  19. Python Excel 数组 for循环无法一次性全部删除问题原因解决
  20. xml阅读器_福昕PDF阅读器永久免费版!

热门文章

  1. python前端学习之js
  2. ensp中路由器(华为设备)的基本使用
  3. manifestdependency,manifest文件
  4. Java Web基础知识之安全:人生苦短,注意安全
  5. Kindle资源-史上最全60GB的Kindle电子书资源网盘打包下载
  6. speedoffice(Excel)表格中如何插入百分比符号
  7. 四种形态图解_波浪理论:调整浪的四种形态(图解)
  8. 窗帘轨道怎么安装?方法有哪些?-江南爱窗帘十大品牌
  9. 2019北邮计算机机试
  10. Matplotlib可视化②——3D绘制散点图曲面图折线图等高线图