Most of the Software Developers spend 50% of time debugging the code so for efficiency purpose proper Debugging techniques must be employed. Cross Debugging an embedded application can be a complex tasks for many reasons: Real-time Execution, Lack of visibility to the target resources, dependent on the peripherals etc. Due to the above reasons its critical for the developers to use proper debugging tools that can resolve the problem quickly and more efficiently.
In the Real Time Embedded Systems, specifically in the multitasking OS based Implementations on of the challenges is the defect fixing, to resolve the defects the developer must be aware of the flow of the program during the defect or during the faulty condition.
Debugging technique like logging the output during the development build during the software maybe using the instrumentation mechanism (printing the data using the UART Protocol) decreases the overall performance of the system. Another technique is the use of the break-point based debugging features of the processor which in turn slow due to the high number of interruptions. Both techniques are intrusive because they modify the software temporarily for the analysis. This is especially troublesome in the concurrent programs running on multi-core processors or the real time applications as errors due to race conditions or inappropriate timing may be hidden.
For the Non-Intrusive Observation of the tracing, most of the modern Microprocessors features and Embedded Trace Unit which delivers the runtime information to a debug port of the processor in a highly compressed format. A specialized hardware is used to store this debugging data from the processor and store for the analysis.