D.U.M.A
DUMA is an open-source library to
detect buffer overruns and under-runs in C and C++ programs.
DUMA helps developers detect common programming bugs:
- Overrunning the end (or beginning) of a dynamically
allocated buffer
- Using a dynamically allocated buffer after returning it to
the heap
- Detecting memory leaks
- Detects mismatch of allocation/deallocation functions: e.g.
allocation with malloc() but deallocation with operator delete
Unlike other malloc() debuggers, DUMA will detect read
accesses as well as
writes, and it will pinpoint the exact instruction that causes an
error.
DUMA uses the virtual memory hardware of your computer
to place an inaccessible memory page immediately after (or before, at
the user's option) each memory allocation. When software reads or
writes this inaccessible page, the hardware issues a segmentation
fault, stopping the program at the offending instruction. It is then
trivial to find the erroneous statement using your favorite debugger.
In a similar manner, memory that has been released by free() is made
inaccessible, and any code that touches it will get a segmentation
fault.
This library is a fork of Buce Perens Electric
Fence library
and adds some additional functionality.
DUMA 2.5.15
|
|
Price
Free to download
Size
0.2MB
License
GNU GPL
Developer
Hayati Ayguen, Michael Eddington
Website
duma.sourceforge.net
System Requirements
Support
Sites:
Selected
Reviews:
|
Features include:
- "Overloads" all standard memory allocation functions like
malloc(), calloc(), memalign(),
strdup(), operator new, operator new[] and also their counterpart
deallocation functions like free(), operator delete and operator
delete[]
- Uses the MMU (memory management unit) of the
CPU: allocates and protects an extra memory
page to detect any illegal access beyond the top/bottom of the buffer
- Stops the program at exactly that instruction, which makes
the erroneous
access to the protected memory page, allowing location of the
defective source code in a debugger; detects erroneous writes at the
non-protected end of the memory block at deallocation of the
memory block
- Detects a mismatch of allocation/deallocation functions:
e.g allocation with malloc() but deallocation with operator delete
- Leak detection: detect memory blocks which were not
deallocated until program exit
- Preloading of the library
- Allowing tests without necessity of changing source code or
recompilation
Return
to Debuggers Home Page
Last Updated Wednesday, February 08 2012 @ 02:48 PM EST |