Software Tracing

Table of Contents
Share on:
Share on reddit
Share on linkedin
Share on twitter
Share on email
Software tracing is a method for obtaining diagnostic information about the embedded software in a live environment without the need to stop the application to get the system feedback. Software tracing always involves some form of a target system instrumentation to log interesting discrete events for subsequent retrieval from the system and analysis.
Recommended video “Running QP and QP/Spy on Embedded Linux”:

Software Tracing and RTEF

Software tracing is especially effective and powerful in combination with the event-driven Real-Time Embedded Framework, such as QP/C or QP/C++, because a running application built of Active Objects is a highly structured affair where all important system interactions funnel through the framework and the state-machine engine. This offers a unique opportunity to instrument these relatively small parts of the overall code to gain unprecedented insight into the entire system.

For example, instrumentation added to the QP/C and QP/C++ frameworks (called QP/Spy) produces trace data that is thorough enough to reconstruct complete sequence diagrams and detailed state machine activity for all active objects in the system. You can selectively monitor all event exchanges, event queues, event pools, and time events because all these elements are controlled by the framework. Additionally, if you use one of the kernels built into QP (the cooperative QV kernel, the preemptive run-to-completion QK kernel, or the “dual-mode” QXK kernel), you can obtain all the data available to a traditional RTOS as well, such as context switches and mutex activity.