Advanced RTOS, embedded real-time OS, compact OS, IDE, Software development toolkits, embedded c compilers, Multicore debugger, hardware probes, static source code analysis tool, secure hypervisor, virtual prototyping platform
The MULTI® Run-Time Error Checking
Run-Time Error Checking

MULTI's Run-Time Error Checking capabilities can provide useful information on a wide variety of run-time errors. MULTI detects the errors when they first occur, rather than later when they manifest themselves through secondary effects.

MULTI can insert special checks into the program to watch for and report a broad variety of run-time errors. By pinpointing the source line at which the error first occurs, error checking saves many hours of time hunting down very intricate problems. Error checking saves a lot of time finding simpler bugs as well, and that time adds up quickly over the course of a programming project. MULTI can check for several errors including:
Allocation - Reading or writing unallocated memory.
Free - Freeing unallocated memory.
Memory Leak - Detecting dynamically allocated memory blocks not referenced by any program pointer.
Array Bounds - Accessing an element beyond the declared bounds of an array.
Assignment Bounds - Storing a value into a variable or bit field too small to hold it.
NULL Dereference - Using a null pointer to access memory.
Switch/Case Statement - Having a parameter to a switch/case statement which does not match any of the case labels.
Divide by Zero - Dividing by zero.
Unused Variables -Having a local variable which is never used, or which is read before being initialized.
Watchpoint - Accessing a specified memory address.
Return - Exiting from a non-void function without returning a value.

   
run-time error checking
Click here for a larger view.
 
Processors Supported
PowerPC
MCORE
ARM/Thumb 
ST100
i960
Alpha
RH32
680x0/683xx 
StarCore
StrongARM
V8xx
SH
RAD6000
FR
CPU32
ColdFire
MIPS
x86/Pentium
TriCore
SPARC/SPARClite
 
Minimal Execution Penalty
MULTI's compiled-in error checking has only a nominal effect on code size and execution speed, making it practical for use in debugging very large programs. Error checking can be enabled (or disabled) on a module by module basis, so the user can restrict its application to certain sections in the program.

Memory Leak Detection
When all pointers to a block of memory allocated with malloc() but not released with free() are discarded, then that memory can no longer be accessed or freed and is called a memory leak. A program with memory leaks gradually consumes more and more memory until the operating system grinds to a halt due to lack of resources. MULTI's findleaks command identifies all pointers in the program and matches them against the addresses of all allocated memory blocks. Any memory block not pointed to by any pointer is reported as a leak. The report identifies the source line originally responsible for allocating the offending block; the malloc() on that line is missing a corresponding free(). Clicking on a line of the findleaks report will cause the associated source code to be displayed in the debugger source pane.


» RTOS
» MULTI IDE
» AdaMULTI IDE
» Compilers
» Communications Software
» Custom Development