Tips for Purify UNIX Users (Error Detection)

Related Topics

If you have used any of the versions of Purify for UNIX, you will notice that Purify for Windows is substantially different. In particular, note the following changes:

§          Purify for Windows instruments complete executables (like Purify for SGI), not individual object files at link time (like Purify for SunOS 4.1, Solaris 2, and HP-UX).

§          You can use the PowerCheck tab in the settings dialog boxes to select the level of error detection you want on a per module basis (.exe, .dll, .ocx, etc.).

§          You use the Purify main window to perform most operations, including turning on coverage data collection.

§          You instrument and run an executable in a single step. For more information, click images\shortcut.gif

§          Each Error View displays the results of only one run. However, it is possible to have more than one Error View open at a time. For more information, click images\shortcut.gif

§          You can use the Navigator to view the run status of programs. For more information, click images\shortcut.gif

§          Purify for Windows supports a concept of filters, instead of suppressions, to help you focus on the most important messages in the Error View, and uses a Purify filter file (.pft) instead of saving suppressions in a .purify file. For more information, click images\shortcut.gif

§          Purify for Windows does not support watchpoints.

§          Purify for Windows uses a pure_api.c file, instead of purify_stubs.a, to call Purify API functions. You also add #include "pure.h" to any source file that uses API functions, rather than #include "purify.h".

§          You save data in a Purify error data file (.pfy), instead of a .pv file. For more information, click images\shortcut.gif

§          By default, Purify for Windows names and stores instrumented programs in a cache directory, instead of requiring you to name them. However, you can still choose to name the instrumented program and store it wherever you want. For more information, click images\shortcut.gif

§          Purify for Windows uses call stack length instead of chain length. Call stack lengths are independent from red zone sizes.

§          Purify for Windows does not use environment variables such as PURIFY_OPTIONS to control preferences and settings at build time and run time. Instead, to change a run-time option use the Purify dialog boxes or command-line options.

§          Purify for Windows provides support for the following new messages: Late Detect Array Bounds Write (ABWL), Late Detect Free Memory Write (FMWL), Continued Exception (EXC), Handled Exception (EXH), Ignored Exception (EXI), Unhandled Exception (EXU), Freeing Freed Memory (FFM), Freeing Mismatched Memory (FMM), Invalid Handle (HAN), Handle In Use (HIU), Invalid Pointer Read (IPR), Invalid Pointer Write (IPW), OutputDebugString (ODS), COM Interface Leak (ILK), and COM API/Interface Failure (COM). For more information, click images\shortcut.gif

§          Purify detects array bounds errors (Array Bounds Read, Array Bounds Write) within dynamically allocated regions. It does not detect these errors for global, local, or static arrays.

§          Purify for Windows replaces the following messages:

 

Purify for UNIX:

Purify for Windows:

File Descriptors In Use (FIU)

Handle In Use (HIU)

Freeing Non Heap Memory (FNH)

Freeing Invalid Memory (FIM)

Freeing Unallocated Memory (FUM)

Freeing Freed Memory (FFM)

Stack Overflow (SOF)

Unhandled Exception (EXU)

Zero Page Read (ZPR)

Null Pointer Read (NPR)

Zero Page Write (ZPW)

Null Pointer Write (NPW)

For more information, click images\shortcut.gif

§          The following messages do not apply to Purify for Windows: Core Dump Imminent (COR), Malloc Reentrancy Error (MRE), Memory Segment Error (MSE), and Signal (SIG).

§          Purify for Windows reports Uninitialized Memory Copy (UMC) messages only for uninitialized memory that is copied with memcpy or another API function. For simple assignments, Purify reports an Uninitialized Memory Read (UMR) message instead of a UMC. However, because UMC messages are suppressed by default in UNIX, you do not see any messages unless you explicitly select View > Suppressed Messages.

(C) Copyright IBM Corporation 1992, 2010.