Although, I don't tend to compare products here, I do want to mention the addictive nature of the product in the realm of debugging environments. Object transformation is limited to dynamic memory checking and binary replacement is limited to checks only during functions invocations. At runtime the database memory usage, pointer usage, data structures, etc. are verified for consistency and correctness. This ensures detection of a wide variety of programming errors and all memory-related errors. Detection of certain categories of errors at compile time got me interested in the product.
Some specific errors can have subcategories of error types.
The list of errors is comprehensive. The examples included with the product illustrate error-detection capabilities for most scenarios. To illustrate some categories of errors, refer to Listing 1. As seen from the about example, the errors are self-explanatory. The errors can be reported to stderr, to a file, or to Insra.