DUMA (Detect Unitended Memory Access) 介绍

### DUMA 介绍 ###

 

DUMA是一个开源的库,用来检测C/C++程序中缓冲区是否溢出。

这个库是由Buce Perens 写的Electric Fence库的一个字库,另外添加了一些功能。

 

它可以帮助程序员检测到一些通常的程序bugs:

--- 超过一个动态分配内存缓冲的头或者尾。

--- 在返回一个动态分配的缓冲到堆中后使用了它。

--- 检测内存泄漏。

--- 检测分配/回收不匹配功能:例如.使用malloc()分配,但是用操作符delete回收。

 

 

 

###  特点 ###

 

不像其它malloc()调试器,DUMA既支持检测写访问也能检测读访问,并且它会精确的定位到出现错误的那条指令。

 

在每个内存分配之前(或者之后,可以由用户设置),DUMA使用你计算机上的虚拟内存硬件来建立一个不可访问的内存页。当程序对

这个不可访问的页进行读或者写的时候,硬件会发出一个segmentation fault(越界错误),在出现问题的指令行的地方停止运行。使用

你比较熟知的调试器来找到错误的状态信息是非常繁琐的。类似的方式,以free()方式释放的内存也被设置为不可访问,任何试图接触

它的代码都会得到一个segmentation fault。

 

 

 

### 功能 ###

--- 重载所有标准的内存分配函数,包括 malloc(),calloc(),memalign(),strdup(),operator new ,operator new[]和它们

对应的回收函数。

--- 使用CPU的MMU(内存管理单元):分配并保护一个额外的内存页来检测任何超过内存首尾的非法访问。

--- 精确的定位到访存出错的那条指令;在回收内存块的时候,检测在内存块的非保护区末尾的错误的写操作。

--- 检测内存分配和回收的调用是否匹配。

--- 内存泄漏检测:检测到程序结束后还没有释放的内存块。

--- 库的预加载。

--- 在不需要改变源代码或者重编译的下就可以测试。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值