Cameron Laird's personal notes on memory debuggers
In 2007, I began relocating much of the information here to the
Many of the organizations I've advised
have profited from "memory
debuggers", testing tools that validate applications' use of
stack and heap spaces. I like these tools; they generally
exhibit a kind of procedural clarity that I
recommend with enthusiasm. I mean "clarity" here on two levels:
memory debuggers have modest costs and immediate, tangible
benefits both as business investments and in the daily
work cycle of a developer.
The best current profile of memory debuggers appears in the
article on the subject. Also valuable is the companion article on
overflows, which, along with much else, documents available
"safe libraries" for C and C++ (and, to a lesser extent, other
languages). I recommend ...
Until its last update in February 2001, Ben Zorn's
Tools for Dynamic Storage Allocation and Memory Management
was more ambitious and current than this page of mine.
It has grown stale since then, though.
Unix-available (nearly-) open-source memory tools
More than Mr. Zorn, I favor Unix-oriented, and open-source,
tools. The latter include:
In principle Checker and mpatrol are admirably portable. I've found
the latter unmaintained, and the former unready. In a pinch, I
can make use of either. valgrind, in contrast, though it
targets only x86, is potent, with considerable care devoted to
intelligent handling of threads.
Unix-available commercial tools
Toward the end of 1994, the now-defunct Advanced Systems magazine
the principal offerings for Unix developers:
The review favored Insure (called Insight at the
time) heavily, and rated Purify third; moreover, I'm
acquainted with several developers who agree that Purify
suffered immediately after its parent's acquisition by
remain comfortable with Purify, at least in its more recent
itself has also distributed useful
of the three offerings.
Other possibilities: the
and SunSoft IDEs:
respectively. They all have
great feature sets, the latter at a remarkably competitive price,
but I'm wary about each. My experience with CenterLine is that
it's just too much--too big, too slow, too complex, too costly. It's a
marvelous technical achievement, and CenterLine improves it
significantly with each release, but they haven't yet hit a
combination that appeals to me for daily development work.
I have yet to use Sun's IDE in other-than-toy development, so
I can't judge its industrial strength. Also, I've solved sticky
problems in the past with such freeware as
The Windows world
Magazines review these products monthly; there's plenty written about
them, although nothing readily link-able here.
- AQtime 4
has received strong recommendations from colleagues I trust.
- Software Verification's
looks promising. One correspondent has testified to its ease of
use and inexpensive license, in comparison with BoundsChecker,
Purify, and Insure++. Software Verification developer Stephen Kellett
about his creation.
promotes itself as "the premier run-time error detection and debugging
tool for C++ developers."
- VERITAS Software's
incorporates and, one hopes, improves on what was once known
Circle. Great Circle not only analyzed, but even rectified
[through GC?]. In April 1998, Richard Brooksby of Geodesic
explained to me
As well as providing leak detection
(like Purify, etc.) Great Circle can
indeed rectify memory leaks in order to provide "leak insurance" for
applications, in case the developers fail to find and fix all their leaks
during testing. Alternatively, it can be used in "garbage collection mode"
in which case you don't need to call free at all. There is usually no
performance penalty for either rectifying or collecting, and our
performance is significantly better than Purify for leak detection. Our
web page explains some of this
in the FAQ.
Great Circle is also available on a variety of Unix platforms. ...
categorized under Windows only. The web page lists the platforms currently
More platforms are in the pipeline.
- Windows 3.1/95/NT: Microsoft Visual C++ 1.5x/4.x/5.x
- SunOS 4.1x: SPARCworks (Sun C++) or g++
- Sun Solaris 2.x: SPARCworks or g++
- HP-UX 9.0.x: Softbench (HP C++) or g++
- HP-UX 10.01/10.10: Softbench (HP C++)
- DEC Alpha Digital UNIX: DEC C/C++
Particular thanks to Eric Anderson for his initiative and clarity
in collecting information for this page.
Laird's notes on