Trace Tools Enhance System and Application Diagnostics (.PDF Download)
A debugger can help track down problems in an application. Setting a breakpoint and stepping through code can help developers understand how an application is really working and see where problems may occur. The problem with this approach is many applications are time sensitive and stopping them in the middle of an operation can be catastrophic. For example, hitting a breakpoint in the middle of a motor control application can do bad things to a high-speed, spinning rotor that is no longer being controlled in real time. Likewise, tracking hundreds of threads running in a GPU can be equally challenging.
Trace tools complement conventional debuggers, but they are often overlooked by developers. These tools are typically part of a development suite but take a different approach to debugging, as trace facilities capture large amounts of information that can sometimes be analyzed in near-real time or during post-analysis. Of course, raw trace data tends to be overwhelming in size with thousands or millions of entries with lots of details.
For example, Green Hills Software’s SuperTrace Probe can capture up to 4 Gbytes of trace data at core clock rates up to 1.2 GHz and trace port speeds over 300 MHz. Instrumented software is another way to capture trace information. Hardware has the advantage of low or no overhead, whereas instrumentation incurs some overhead. Lauterbach’s Trace32 family of hardware platforms even support hypervisor awareness.