Cameron Laird's personal notes on memory debuggers

In 2007, I began relocating much of the information here to the Memfix publications page.
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 Wikipedia article on the subject. Also valuable is the companion article on buffer 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 Debugging 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 reviewed 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 Rational. I remain comfortable with Purify, at least in its more recent versions. Parasoft itself has also distributed useful comparisons of the three offerings.

Other possibilities: the CenterLine, Hewlett-Packard, and SunSoft IDEs: ? , SoftBench and Workshop, 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 dmalloc.

The Windows world

Magazines review these products monthly; there's plenty written about them, although nothing readily link-able here.

Acknowledgments

Particular thanks to Eric Anderson for his initiative and clarity in collecting information for this page.
Cameron Laird's notes on memory debuggers/claird@phaseit.net