EUROStrace is a plug-in module for EUROScope. It displays the flow of a EUROS application in a graphical way. This is done with the help of a special instrumented version of EUROS that is linked to the application.
After the development phase the unchanged application can be linked to the regular, un-instrumented version of EUROS.
At various places within EUROS, special instructions are added for later execution. When executed, these instructions record the current timestamp and additional parameters in an event table.
The EUROS version with trace support can record the following events (among others):
• System calls of the Process Manager
• Task switches
• User events
It's possible to configure the set of recorded events. This can be done by executing a system call in the application or in the debugger. The running speed of the application is slightly reduced by the trace mechanism because, for every event, an entry in the internal trace table is recorded. The size of this table is defined during initialization of the application and is limited only by available memory. The size of a single trace entry is between 14 bytes (16 bit architecture) and 18 bytes (32 bit architecture).
When stopping the application, the contents of the trace table are transferred to and processed by EUROScope. The example picture contains a typical diagram showing the timeline of all recorded events. Using EUROStrace it's easy to find problems caused by the time-related behavior of the application.
These often include:
• Deadlocks when waiting for system resources.
• High-priority tasks, threads or I/O operations that unexpectedly use up large amounts of CPU time and block out other tasks.
Since the time line has a high resolution (the smallest unit is a EUROS timer tick), it is possible to measure time intervals precisely. For example, the time required by a thread to process an interrupt event can be determined easily.