The debug memory allocation or dmalloc library is a drop-in replacement for the system's native memory management routines. It provides powerful debugging facilities which are configurable at runtime. These facilities include such things as memory-leak tracking, fence-post write detection, file/line number reporting, and general logging of statistics. The library has been run successfully on a wide variety of operating systems. It also provides support for the debugging of threaded programs.
Fuzz is a tool for testing software. It runs the target program repeatedly and provides random data streams to applications in a number of ways and then reports whether the program can be made to crash. It is a similar but more advanced version of the tool used to compile the original fuzz paper.
The GNU Compiler Collection contains frontends for C, C++, Objective-C, Fortran, Java, and Ada as well as libraries for these languages. It is a full-featured ANSI C compiler with support for K&R C as well. GCC provides many levels of source code error checking traditionally provided by other tools (such as lint), produces debugging information, and can perform many different optimizations to the resulting object code.
The GNU Debugger (GDB) is a source-level debugger for C, C++, Java, Modula-2, and several other languages. It runs on GNU/Linux, the BSD's, and almost every major proprietary OS. GDB can debug programs running on the same machine as itself, or it can communicate over a network or serial line with a debugging stub on another machine; thus, it can be used for embedded and kernel debugging.