Code Medic provides access to the power of gdb with an intuitive front end. It currently supports opening multiple source windows at once, setting/clearing breakpoints while the program is running, watching variables change in the variable tree as you step through code (even with nested structs), text searching through source, and integration with Code Crusader to provide a rapid, efficient develop-debug cycle.
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.
Dynamic Probes (Dprobes) is a generic and pervasive system debugging facility that will operate under the most extreme software conditions such as debugging a deep-rooted operating system problem in a live environment. Dprobes allows the insertion of fully automated breakpoints or probepoints anywhere in the system and user space. Each probepoint has an associated set of probe instructions that are interpreted when the probe fires. These instructions allow memory and CPU registers to be examined and altered using conditional logic. When the probe command terminates, prior to returning to the probed code, a syslog record may be optionally generated.
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 GRASP Project has created an algorithmic-level graphical representation for software called the Control Structure Diagram (CSD). The CSD was created to improve the comprehension efficiency of Ada source code and, as a result, improve software reliability and reduce software costs. Since its creation, the CSD has been expanded and adapted to include other languages. GRASP provides the capability to generate CSD's from Ada 95, C, C++, Java, and VHDL source code in both a reverse and forward engineering mode with a level of flexibility suitable for professional application. GRASP has been integrated with the GNU family of compilers for Ada (GNAT) and C (gcc), and Sun's javac compiler for Java. Use of GRASP is not restricted to these compilers, however. This has resulted in a comprehensive graphically-based development environment for these languages. The user may view, edit, print, and compile source code as CSDs with no discernible addition to storage or computational overhead.
libyama is a malloc implementation that bundles leak tracking by auditing allocations, array bound write detection, detection of access to free'd memory, realloc/free on invalid pointers. It is intended as a replacement to malloc, and can either be preloaded on the command line, or can be linked into a program.