Whitepaper: Runtime and Memory Error Detection and Visualization with Parasoft Insure++

Pinpoint the real memory issues within your application. Identify the risks they expose.

Learn about the solution that helps developers find and fix errors in code prior to release.

Parasoft Insure

Download the whitepaper for details on Parasoft Insure++, an automated runtime application testing tool that detects elusive errors.

Here’s what you’ll learn about:

  • Automating C/C++ runtime error detection with Insure++
  • What problems can Insure++ find?
  • Discovering memory usage problems
  • Avoiding memory problems
  • Memory fragmentation
  • Memory overuse
  • Memory bottlenecks
  • Visualizing memory allocation at runtime
  • Cleaning up leaks
  • C and C++ developers have a unique problem: many errors in their code don’t manifest themselves during testing.
  • Software with subtle problems such as memory corruption may run flawlessly on one machine but crash on another.
  • To help developers find and fix such problems prior to release, Parasoft designed Parasoft Insure++.
  • Parasoft Insure++ is an automated runtime application testing tool that detects elusive errors such as memory corruption, memory leaks, memory allocation errors, variable initialization errors, variable definition conflicts, pointer errors, library errors, I/O errors, and logic errors.
  • With the click of a button or a simple command, Insure++ automatically uncovers the defects in your code, helping you identify the source of that strange problem you’ve been trying to diagnose for weeks. It also alerts you to problems that you were previously unaware of.
  • Insure++ detects more errors than any other tool because its patented technologies achieve the deepest possible understanding of the code under test and expose even the most elusive problems.

Insure++ automatically detects errors that might otherwise go unnoticed in normal testing. Subtle memory corruption errors and dynamic memory problems often don’t crash the program or cause it to give incorrect answers until the program is delivered to customers and they run it on their systems – then the problems start.

Even if Insure++ doesn’t find any problems in your programs, running it gives you the confidence that your program doesn’t contain any errors. Of course, Insure++ can’t possibly check everything that your program does. However, its checking is extensive and covers every class of programming error, including:

  • Memory corruption due to reading or writing beyond the valid areas of global, local, shared and dynamically allocated objects.
  • Operations on uninitialized, NULL, or “wild” pointers.
  • Memory leaks.
  • Errors allocating and freeing dynamic memory.
  • String manipulation errors.
  • Operations on pointers to unrelated data blocks.
  • Invalid pointer operations.
  • Incompatible variable declarations.
  • Mismatched variable types in printf and scanf argument lists.

Many modern algorithms make heavy use of dynamic memory, but few take precautions to ensure they achieve the best possible use of the memory system. As a result, many applications benefit from streamlining memory usage or modifying the order of allocation requests to reduce fragmentation that takes place when memory is allocated and freed.

Parasoft Insure++ offers a graphical memory display/animation tool designed to help developers avoid memory problems by displaying and animating memory allocations performed by an application.

Parasoft Insure++ can help you detect and avoid more than just memory leaks. It shows you the most common memory problems, including memory blowout, memory fragmentation, memory overuse and memory bottlenecks.

Memory fragmentation can be caused by the overuse of memory which slows down memory allocation. Parasoft Insure++ Heap Layout report can help you monitor memory fragmentation, which immediately presents the layout of dynamically allocated blocks and the free spaces in between them.

Memory overuse or hogging occurs when memory is allocated by a program and never freed. Memory is not leaked during overuse though, because pointers remain in the program; the memory can be freed, but the program doesn’t free it. As a result, the program uses more memory until it runs out and crashes.

Bottlenecks occur when an operating system spends more time paging memory than running the program. Memory bottlenecks frequently arise when a program uses large amounts of dynamic memory or calls large amounts from different parts of the program.

To avoid this, the program should be analyzed with respect to how much memory different parts of the program need and if that need is warranted. Parasoft Insure++ enables you to calculate how much memory is allocated by a specific path, routine or block type. This type of analysis is critical for understanding algorithmic problems and can make it much easier to improve memory performance.

When developers write their programs, they usually have some idea how memory should be allocated by the program. This idea is typically far from what the program is actually doing. Parasoft Insure++ lets developers see the “truth” about their programs by visualizing memory allocation at runtime.

About Parasoft

Parasoft’s software testing solutions support the entire software development process, from when the developer writes the first line of code all the way through unit and functional testing, to performance and security testing, leveraging simulated test environments along the way. Parasoft's unique analytics platform aggregates data from across all testing practices, providing insights up and down the testing pyramid to enable organizations to succeed in today's most strategic development initiatives, including Agile/DevOps, Continuous Testing, and the complexities of IoT. Parasoft’s automated software testing innovations fuel software development organizations, helping teams reduce the time, cost, and effort of delivering high-quality software to the market.