NJAMD!


Not Just Another Malloc Debugger

Latest Release - Many.. Try 0.9.3p1 first and contribute!

News

The Official NJAMD site is at Sourceforge. If you are interested in doing development for NJAMD, I suggest you check out the task list, as well as the developer documentation. There are also now two NJAMD mailing lists that you can subscribe to or view the archives online.

Description

A malloc debugger is usually a drop-in replacement for standard libc malloc and friends. Normally, when a program does something illegal with its dynamic memory (such as writing past the end of a buffer returned by malloc(3), ie: an overflow), its execution may not immediately terminate. Instead, bizarre and unexpected results can occur later on during program execution. This is due to the fact that malloc implementations store book keeping information before and after allocated segments. So overwriting these regions won't cause your program to crash right away, but will cause chaos during subsequent malloc requests, or even during usage of memory returned from otherwise seemingly valid malloc()

Malloc debuggers change all this by mapping protected memory before or after your buffer, so your program crashes immediately after an overflow.

Currently, there are about a dozen freely available malloc debuggers, with new ones popping up every day. However, frustrated with other malloc debuggers, I went above and beyond to create NJAMD: Not Just Another Malloc Debugger.

NJAMD sets out to pick up where other malloc debuggers left off. That is, it protects against all common dynamic memory bugs, including overflow, underflow, writes to freed memory, and memory leaks, all without recompiling or even relinking your executable. In addition, it is able to trace memory leaks even through arbitrary library functions that wrap malloc(3), such as strdup(3), GUI widget allocators, and even C++ new and delete.

Current available malloc debuggers are bloated and slow, and/or require a lengthy recompile of your entire project. NJAMD is fast enough for everyday use, and light enough to debug most apps. (Large apps, such as the gimp, will require a ram-heavy development machine).

Features*

* Some features are not present on all platforms

How it Works

Glad you asked! The following documentation is available: