Tracealyzer is a trace visualisation tool available integrated with SAFERTOS that gives an unprecedented level of insight into the runtime world of SAFERTOS-based embedded software. Solve complex problems in a fraction of the time that would otherwise be needed, develop more robust designs to prevent future problems and find new ways to enhance your software's performance. This improved understanding allows you to increase the overall software quality and reduce the time spent troubleshooting.
Tracealyzer records the runtime behaviour of SAFERTOS, logs selected events from your application and explains the data through more than 30 graphical views, that are interconnected and easy to navigate.
Tracealyzer shows you the "big picture", with high-level views that complement the detailed debugger view. The 30+ innovative views are designed to be intuitive to read – by clicking in one view you can open or focus another view on the clicked location.
Tracealyzer is best experienced live, so contact one of our sales representatives here and request your 30 day SAFERTOS evaluation package.
The main trace view shows you all recorded events visualized on a common vertical time-line, including task execution timing, interrupts, system calls and user events. The task and interrupt trace are shown as coloured rectangles, and can be presented using three different visualization methods. Events are shown as floating text labels. Zooming is very easy using a click-and-drag selection, which also works as a time measurement tool.
Tasks and events can be clicked and highlighted for additional information, including timing and dependencies. The lower right corner contains a powerful filter, and the Finder dialog provides even more powerful filters.The main trace view gives you a detailed understanding when zoomed in on specific intervals, and naturally transforms into an overview when zooming out.
You can create multiple trace windows of this type, showing different parts and using different zoom levels and filters. Bookmarks make it easier to find a previous location, and can be saved for future reference. Some supporting views can also be accessed by double-clicking on objects in the trace, others using the right-click context menu.
This view presents a horizontal time-line showing the total CPU usage, and also CPU usage per task/interrupt. The CPU Load Graph allows for navigating the main trace view, since a double-click in the CPU Load Graph focuses the main trace view on the clicked interval. Zooming is allowed in this view as well, independently of other views, and filters are available for focusing on individual tasks or interrupts.
This is an example of several Actor Instance Graphs, each showing the distributions of a specific timing property for an actor, i.e., a task or interrupt routine. This includes execution time, response time, fragmentation, and several others. Each data point represents one specific execution of a task or interrupt. This graph, Response Time, shows the variation in response times for two selected tasks. Tasks instances with high response times may reveal resource conflicts, e.g., where several tasks or interrupts compete for CPU time in a busy interval. This view makes it easier to spot such locations that may indicate problems or possibilities for optimization.
All views with horizontal orientation can be combined in a single parent window, with synchronized scrolling. This includes most views except the main trace view, but the task and interrupt trace is available as a horizontal view as well. In this example, a horizontal execution trace is shown together with an execution time plot and the CPU Load Graph. Combining views like this allows for spotting patterns that otherwise would be hard to see using individual views, e.g., how the response time depends on other events, and this also allows for greater customization of the user interface.
Many system calls allow for communication or synchronization between tasks. Tracealyzer understands these dependencies and the Communication Flow graph is a summary of all such dependencies found in the trace, in the form of a directed graph. This is a high-level view of the communication dependencies between tasks and interrupts, including the kernel objects used, such as semaphores, data queues and mutexes. Like in all views, double-clicking on a node opens a related view focused on the particular object. Double-clicking on a kernel object (e.g., a semaphore) opens the Object History view (shown below), a list of all events on the specific kernel object. If double-clicking on a task or interrupt, the Actor History view is opened showing all executions of the actor.
The User Event Signal Plot view allows you to plot any data logged as User Events. This is highly useful for analysis of control loops and other time-dependent algorithms as it allows you to correlate the data points with the other views to find the cause behind anomalies in the plot. For instance, incorrect scheduling priorities or CPU overload might have delayed the computation. Double-click on a data point to find the location in the trace where the data was logged.
Tracealyzer relies on a trace recorder library for SAFERTOS. The recorder library is delivered in C source code. Customers who purchase SAFERTOS and Tracealyzer are supplied two versions of the SAFERTOS code. One version which has been instrumented with the trace recorder library for use in development and another version of SAFERTOS without the Tracealyzer library for production.