Expose Elusive Errors
Errors such as memory corruption, memory leaks, access outside of array bounds, invalid pointers,
and the like often go undetected during normal testing, only to result in application crashes in the field.
Parasoft Test automatically identifies a variety of difficult-to-track programming and memory-access errors,
along with potential defects and inefficiencies in memory usage.
During testing, Parasoft Test checks all types of memory references,
including those to static (global), stack, and shared memory — both in your code and in third party libraries.
Errors detected include:
- Corrupted heap and stack memory
- Use of uninitialized variables and objects
- Array and string bounds errors on heap and stack
- Use of dangling, NULL, and uninitialized pointers
- All types of memory allocation and free errors or mismatches
- All types of memory leaks
- Type mismatches in global declarations, pointers, and function calls
- Some varieties of dead code (compile-time)
Multiple Use Modes
Parasoft Test's patented source instrumentation detects more error types than other memory error detection technologies,
and also provides complete information indicating the root causes of the errors found. For example, it tells you exactly
when-and at what line of code-a leak occurred.
When full source code instrumentation is not possible or desirable, two "lighter" analysis modes are available:
- Linking with runtime analysis - detects and reports most error types, including leaks, bad memory references,
standard API usage errors, etc,.
- Analysis without recompilation or relinking— checks all the data memory references a process makes,
reporting reads of uninitialized memory, bounds errors, and memory leaks.
Parasoft Test can also visualize how an application uses memory—providing
a graphical view of all memory allocations, over time, with specific visibility into overall heap usage, block allocations,
possible outstanding leaks or bottlenecks, and so on. This helps you:
- See how much memory an application uses in response to particular user events.
- Compare an application's overall memory usage to its expected memory usage.
- Look for memory fragmentation to see if different allocation strategies might improve performance.
- Detect the most subtle memory leaks, which cause problems over time.