This paper evaluates the ability of a variety of commercial and non-commercial software products to detect serial run-time errors in C and C++ programs, to issue meaningful messages, and to give the line in the source code where the error occurred. The commercial products Insure++ and Purify performed the best of all the software products we evaluated. Error messages were usually better and clearer when using Insure++ than when using Purify. Our evaluation shows that the overall capability of detecting run-time errors of non-commercial products is significantly lower than the quality of both Purify and Insure++. Of all non-commercial products evaluated, Mpatrol provided the best overall capability to detect run-time errors in C and C++ programs. Copyright © 2006 John Wiley & Sons, Ltd.