Display Stack Usage
For stack usage coverage of tasks, this window displays all active tasks with its stack pointer addresses, maximum stack usage, stack area and stack utilization.
Our TRACE32® OS-aware debugging provides you with several key insights into your applications and the operating systems they are running on, no matter if you use rich operating systems like Linux, real-time Operating Systems (RTOS), industry specific OSes like AUTOSAR-standard based products or a mixture of all.
On virtualized systems, where multiple OSes are controlled by a hypervisor, our TRACE32® Hypervisor-aware debugging allows you to perform concurrent OS-aware debugging for each guest OS/virtual ma-chine (VM) and display an overview of the overall system. In addition to static hypervisors we support even dynamic hypervisors, which dynamically allocate memory resources and cores to the VMs, a unique TRACE32® feature in the embedded industry.
Our TRACE32® tools provide access to hypervisor and OS structures and data so that you can better un-derstand how they are behaving and utilizing chip resources.
The TRACE32® OS awareness is available for a huge amount of embedded operating systems of all kinds. It supports rich OSes as well as RTOSes and all of the most popular open source and commercial OSes used in embedded applications.
Debug the whole software stack from user application to device driver and in doing so query and display all OS objects such as threads, message queues, etc. In virtualized systems you can debug all VMs and their applications concurrently.
Our TRACE32® tools provide many sophisticated real-time analysis functions, including symbolic function call trace and detailed performance analysis functions. They are also available in virtualized systems under control of a hypervisor.
Our TRACE32® tools provides you not only a static display of the current status of OS objects, but also the dynamic behavior of the OS objects over time, e.g. an OS task scheduling analysis.
You can debug heterogenous AMP systems with each core running its own (different) Operating System as well as AMP systems with SMP clusters, which share a single OS instance.
TRACE32® PowerView GUI offers you the same debugging experience in simulations as with real hardware. Due to our tool-agnostic concept, you will have the same experience independent of your target – virtual or physical.
Our TRACE32® Hypervisor- and OS-awareness technology significantly simplifies your debug activities, as you can immediately access all the components of the Hypervisor, OS and the applications: You can display system objects, such as tasks, threads, semaphores, and mailboxes, set task-aware breakpoints and perform task-aware performance monitoring. If your OS uses an MMU (Memory Management Unit), our debugger can access code and data using the information from the OS MMU tables and walk through it to find a valid logical-to-physical translation.
The availability of the individual features depends on the specifications of the chip used and your TRACE32® products. Learn more about it in the slides below.
Displays the task table of an OS or detailed information about one specific task.
The Global Task List represents the heart of the TRACE32® hypervisor-aware debugging. It lists all tasks/processes/threads of the guest OSes and the hypervisor. PowerView can visualize the context of any task in its GUI, even if a VM is currently not active.
For stack usage coverage of tasks, this window displays all active tasks with its stack pointer addresses, maximum stack usage, stack area and stack utilization.
Depending on the used OS(es) you can display various kernel resources, e.g. Processes, Threads, Queues, Semaphores, Timers, Event Groups, Stream Buffers, Message Buffers, Kernel Driver or Kernel log buffers.
Displays a task runtime time chart with the time spent in different tasks. You can see how much time is spent in the critical paths of the program and easily identify challenges caused by interrupts or task prioritization.
Here you can analyze task run-times. This includes the total run-time of a task with its CPU utilization, the count, how often the task was scheduled, and the shortest, longest and average time the task was scheduled.
Display of a graphical tree of the function nesting. The minimum, maximum, average and total runtime of functions is displayed as well as the number of runs and the proportion of the total execution time.
Display of the call stack of the operating system, libraries and the application, including local data storage, parameter passing, enclosing subroutine and block context, and return states. This is useful to analyze the context of any process, and to examine the current state of a thread. The call stack shows clearly, if and where the application waits for a specific OS event.
Displays the result of the code coverage analysis related to modules including OS code. You can analyze several code coverage metrics and also display results for the selected metric and all included metrics. E.g. the MC/DC metric includes also Condition, Decision and Statement coverage.
For stack usage coverage of tasks, this window displays all active tasks with its stack pointer addresses, maximum stack usage, stack area and stack utilization.
Depending on the used OS(es) you can display various kernel resources, e.g. Processes, Threads, Queues, Semaphores, Timers, Event Groups, Stream Buffers, Message Buffers, Kernel Driver or Kernel log buffers.
Displays a task runtime time chart with the time spent in different tasks. You can see how much time is spent in the critical paths of the program and easily identify challenges caused by interrupts or task prioritization.
Here you can analyze task run-times. This includes the total run-time of a task with its CPU utilization, the count, how often the task was scheduled, and the shortest, longest and average time the task was scheduled.
Display of a graphical tree of the function nesting. The minimum, maximum, average and total runtime of functions is displayed as well as the number of runs and the proportion of the total execution time.
Display of the call stack of the operating system, libraries and the application, including local data storage, parameter passing, enclosing subroutine and block context, and return states. This is useful to analyze the context of any process, and to examine the current state of a thread. The call stack shows clearly, if and where the application waits for a specific OS event.
Displays the result of the code coverage analysis related to modules including OS code. You can analyze several code coverage metrics and also display results for the selected metric and all included metrics. E.g. the MC/DC metric includes also Condition, Decision and Statement coverage.
Debugging an operating system requires special support from the debugger. We say that the debugger needs to be “aware” of the operating system. Since our TRACE32® debug- and trace tools support a wide range of target operating systems, this special support is not statically linked in the debugger software but can be dynamically loaded as an extension depending on which operating system is used.
Learn more about TRACE32 OS-Awareness
The set of files providing operating system debugging capabilities is called “awareness”. To be able to read the task list or to allow process or module debugging, the OS awareness accesses the OS kernel’s internal structures using the kernel symbols. The TRACE32 OS-awareness and the TRACE32 MMU support allow users to debug seamlessly across process boundaries: It is possible to directly access the virtual address space of each process and to display the current register set and the stack frame for every single process. After loading an OS specific extension, our TRACE32® PowerView software provides additional commands, options and displays, which simplify the debugging of the operating system.
Learn more about TRACE32 Hypervisor-Awareness
The virtualization concept allows multiple operating systems to be run in parallel on a single hardware platform. A hypervisor, which is the core of virtualization, ensures that everything works reliably and efficiently. The hypervisor is a software layer fulfilling two tasks: Starting and managing the virtual machines (VMs) and virtualizing the physical hardware resources for the VMs. An operating system running within a VM is referred to as a guest OS. All accesses by the guests to the virtualized hardware resources are mapped to the physical resources by the hypervisor.
Using our TRACE32® hypervisor-awareness, the debugger detects and visualizes the VMs of the hypervisor. it is now possible to debug several operating systems at the same time. The most important objective is seamless debugging of the overall system. This means that when the system has stopped at a breakpoint, you can check and change the current state of every single process, all VMs, plus the current state of the hypervisor and of the real hardware platform. In addition, you can set a program breakpoint at any location in the code.
For AUTOSAR-based, safety-critical (multicore) microcontroller/microprocessor systems in the automotive industry, advanced analysis techniques are required to prove functional safety. Our TRACE32® debug and trace tools not only enable deep insights into such systems thanks to our TRACE32® AUTOSAR OS awareness, but also advanced timing analysis solutions as a result of our long-standing cooperation with the most important AUTOSAR tool vendors.
TRACE32® supports all popular open source and commercial real-time and rich operating systems used in embedded applications and over 80 operating systems in total.
Our TRACE32® software package contains a ready-to-run configuration for the FreeRTOS Real Time Kernel. The FreeRTOS awareness provides easy access to task lists and other kernel information, generates performance analysis data and enables you to do a most effective debugging with the TRACE32® systems on targets running FreeRTOS.
Learn moreOur TRACE32® software package contains a ready-to-run configuration for the Linux operating system. The Linux awareness provides easy access to task lists and other kernel information, generates performance analysis data and enables you to do a most effective debugging with the TRACE32® systems on targets running Linux.
Learn moreOur TRACE32® software package contains a ready-to-run configuration for the PikeOS Real Time Operating System from SYSGO AG. The PikeOS awareness provides easy access to task lists and other kernel information, generates performance analysis data and enables you to do a most effective debugging with the TRACE32® systems on targets running PikeOS or PikeOS MPU.
Learn moreOur TRACE32® software package contains a ready-to-run configuration for the QNX Real Time Kernel from BlackBerry Limited. In close cooperation with BlackBerry, we built a high sophisticated QNX awareness, which enables you to do a most effective debugging with the TRACE32® systems on targets running QNX.
Learn moreOur TRACE32® software package contains a ready-to-run configuration for the VxWorks real-time kernel from Wind River. In close cooperation with Wind River, we built a high sophisticated VxWorks awareness, which enables you to do a most effective debugging with the TRACE32® systems on targets running VxWorks.
Learn moreOur TRACE32® software package contains a ready-to-run configuration for the open-source ZephyrOS Real Time Operating System. The ZephyrOS awareness provides easy access to task lists and other kernel information, generates performance analysis data and enables you to do a most effective debugging with the TRACE32® systems on targets running ZephyrOS.
Here you will find each of the more than 80 supported operating systems.
Find Your Target OSTRACE32® supports a wide range of open source and commercial static and dynamic hypervisors in embedded applications. Static hypervisors partition resources statically and assign them at system instantiation time, wheras dynamic hypervisors allocate the resources dynamically to a VM. Memory is usually assigned to a VM using a 2-stage translation performed by a MPU or MMU. Support for dynamic hypervisors is a unique feature of our TRACE32® tools in the embedded industry.
Even for operating systems for which we cannot provide out-of-the-box-support for OS-aware Debugging, e.g. for reasons of confidentiality, you can use our TRACE32® tools without having to do without this functionality.
Our TRACE32® PowerView GUI provides a mechanism to add customized features, called Extensions. In an Exten-sion you can call API functions to implement a wide variety of features, including display (RT)OS kernel resources (e.g. task lists), perform task aware statistical analysis or perform task specific stack coverage.
By doing this you can implement OS-aware Debugging for your own operating systems easily. All necessary tools to build an extension are included in our Extension Development Kit (EDK), which is available free of charge for TRACE32® customers on request.
We, Lauterbach GmbH, use cookies and similar technologies on our website. Some of them are technically necessary (e.g. session cookies or shopping cart cookies), while others are not necessary and help us to improve our online presence and to operate it economically.
More information