Steve Apiki
The familiar programmer's grind -- compile, run, debug, and repeat as necessary -- will have another major step added to it if proponents of run-time error checking have their way. Borland, Microsoft, and Nu-Mega Technologies are making strong efforts to integrate this reliability-enhancing technology more deeply into the programming cycle by hooking run-time error checkers directly into the Borland C++ and Microsoft Visual C++ integrated development environments (IDEs).
Tools vendors have always supplied programmers with expressive languages, such as C, and prewritten code in programming libraries, which lets developers write more powerful applications for end users. Meanwhile, in today's highly competitive market, programmers must race to ad
d new features to their programs. However, the difficulty of tracking memory and resource allocation grows with the use of higher-level APIs and language extensions. The result of these two trends is often more features -- but also more bugs -- in applications.
"Top quality is not the winning market feature in applications today," says Jim Moskun, chief technology officer at Nu-Mega (Nashua, NH, (603) 889-2386). Nu-Mega hopes to help reverse that trend with its Bounds Checker Professional, slated for September announcement (price at press time was undetermined).
The company's current Bounds Checker for Windows, which automatically flags memory and resource leaks, monitors illegal address references, and validates Windows and C-library APIs, established the Windows run-time error-detection category of tools. But Bounds Checker, according to Nu-Mega president Frank Grossman, is used primarily in the quality-assurance stage of program testing, in which a programmer often receives an error report mont
hs after writing an errant module.
Bounds Checker Professional
, in contrast, is designed for daily use, allowing programmers to find errors while the code is still fresh in their minds. "We want programmers to check early and check often," says Grossman. The program integrates directly into the Visual C++ environment on the toolbar, making it as easy to error-check a program as it is to merely run it. The program also enables programmers to do such things as ignore validation flags or errors by module or by function, which allows team members to check only the files that they've modified, or ignore a known bug in application framework code.
Bounds Checker Professional's ability to let project managers establish libraries of acceptable errors lets a manager give each programmer a readily definable mission: Make every module run cleanly through error checking. Nu-Mega's error-detection software will run with all Visual C++ environments.
Microsoft (Redmond, WA, (206) 882-
8080) is also making run-time error detection a more integral part of its upcoming Visual C++ 4.0 by including C debugging libraries. These libraries should help programmers identify problems that occur at the interface between the user and Microsoft-supplied code.
Borland (Scotts Valley, CA, (408) 431-1000) is also releasing new error-checking programs. Although Bounds Checker Professional works with Borland and Symantec compilers, it is tightly bound only to Microsoft's Visual C++ IDE. Borland's new CodeGuard program brings a similar level of error-checking integration to the Borland camp.
CodeGuard hooks into
the Borland C++ 4.5 IDE, detecting memory and resource errors and validating API parameters in a one-step process for programmers writing 16-bit Windows programs. CodeGuard isn't quite as expert as Bounds Checker Professional is at handling tricky API problems, but Borland officials say they will continue to add capabilities to their program.
As tool vendors pu
t run-time error detection into the hands of every programmer, developers and end users alike will benefit. Developers will become more efficient and effective, while users will get better, more reliable programs.
screen_link (39 Kbytes)

1)
Nu-Mega's Bounds Checker Professional indicates an invalid argument, the cause of which was an uninitialized structure-size field.
2)
The middle pane shows the call stack.
3)
Here, Bounds Checker Professional displays the source code, with the offending code highlighted.
screen_link (32 Kbytes)

CodeGuard hooks into the Borland C++ 4.5 IDE, detecting memory and resource errors and validating API parameters in a one-step process for programmers writing 16-bit Windows programs.