As all embedded developers quickly learn, intentions don't necessarily translate into reality. There can often be a vast difference between what you want to happen and what actually happens as your application executes.
This problem becomes more severe when the code is inherited. Yes, you could try to piece things together yourself, but system complexity might just undercut your efforts at understanding the code.
And what about multi-threaded applications? If you've ever encountered race conditions or deadlocks, you know how difficult it can be to uncover the source of the problem.
This is where runtime tracing monitors come in. These utilities graphically display the sequence of function or method calls in your running application - as well as the active threads - illustrating through pictures what is actually happening. With this information, unexpected exceptions can be easily traced back to their source, complex procedures can be distilled to their essence, threading conflicts can be resolved and inherited code can jump off the page and display its inherent logic.
This function, using the industry standard Unified Modeling Language for its graphical display, is provided in HCL OneTest Embedded by the runtime tracing feature for the C and C++ languages.