Electric Fence is a debugger that uses virtual memory hardware to detect
illegal memory accesses. It can detect two common programming bugs:
software that overruns or underruns the boundaries of a malloc() memory
allocation, and software that touches a memory allocation that has been
released by free().

Unlike other malloc() debuggers, Electric Fence will detect read accesses
as well as writes, and it will stop and pinpoint the exact instruction
that causes an error. It is not as thorough as Purify, however.

In order to debug a program it needs to be linked with Electric Fence's
library or dynamic linking needs to be used; README.Debian explains that
in detail.

In addition to the static library (libefence.a), this package also
contains a shared library of electric fence (libefence.so). Thus, you
don't need to recompile your programs any more, all you need to do is:

LD_PRELOAD=libefence.so ./your-buggy-program

and libefence's malloc will be used.

If you're using c++, and you and want to statically link your c++
programs, you shouldn't use g++ to link libefence.a, but rather:
    gcc -o myprog myprog.o -lstdc++ -lg++ -lefence
(if you use g++, the order is different, and efence's malloc doesn't
get used)

Be sure to read the `libefence` manpage which describes how to set
various environment variables which alter lebefence's behavior
