QNX Momentics development suite provides a powerful, unified debugging environment regardless
of programming language. The debugger's intuitive interface is completely integrated with the other IDE tools,
giving developers flexibility to best address the problems at hand.
Views from any of the other IDE tools can be opened directly within the source debugger, extending its
compatibility for a complete perspective on the application's state and data. It also:
![]() |
Source debugger screenshot |
Go beyond conventional debugging and code analysis by analyzing how all the components in a complex realtime
system interact with each other using the QNX Momentics system profiler.
Using the system profiler, developers can resolve timing conflicts, pinpoint deadlocks, root out logic flaws,
detect hidden faults in software and hardware, and fine-tune application performance — whether it's running
on a uniprocessor or multiprocessor system. Developers can also:
Visualize events to quickly pinpoint problems
The system profiler can display an enormous amount of information, including kernel calls, hardware interrupts,
thread states, messages, and scheduling activities. But it also gives precise control over which events are recorded
and when, allowing developers to focus on areas of interest. It also includes event filtering and display options,
so it's easy to "zoom in" on performance-degrading hotspots and view complex interactions at a glance.
Debug and optimize multi-core systems
The system profiler works with QNX Neutrino, the first RTOS to support Symmetric Multiprocessing (SMP). It is
therefore aware of which CPU is running which thread and provides easy-to-read color coding. For example, use the
system profiler to detect resource contention or incorrect behavior in code ported from single-core devices. A CPU
migration summary indicates how much a particular thread has moved from core to core as part of the kernel's
scheduling useful for detecting thrashing or caching issues. The inter-core messaging summary tells you how
much message passing is occurring between cores in the system useful for detecting tightly coupled threads. In
each case, the system profiler can display information on a per-CPU basis.
Understand what's happening and why
A question often asked when looking at a system trace is, "Why is this thread running at this particular time?" The
system profiler provides a 'why running' tool that lists the series of events that led to the current state of a thread,
tracing the series right back to the beginning of the trace if need be. Similarly, the system profiler provides client
server statistics including the amount of time a client needs directly and how much it requires from the servers it
uses. The thread state snapshot tool in the system profiler also gives a summary of every thread and its state at a
selected time — know the current state of everything in the system at a given point in time.
Create your own custom filters
If the stock event filters provided by the instrumented kernel don't suit the behavior that needs to be captured,
no problem: the kernel supports dynamic, user-defined filters for complex, application-specific conditions. Developers
can focus on events of interest and reduce the volume of data for easier analysis.
![]() |
Source debugger screenshot |