codehearts
codehearts

Reputation: 505

Viewing graphs of function runtimes with Lauterbach Trace

I'm debugging a crash where a long-running method is called frequently before death. My primary concern is the difficulty in determining where nested and/or recursive calls are.

The Trace->Chart->Symbols window shows a graph of which function is running at a given time, which looks like this for the following calls:

         display
            |
       drawChildren
       /         \
  drawTitle   drawImage
      |           |
   display     display
      |           |
drawChildren  drawChildren
display      | _     _   _       _   _     _
drawChildren |  |_  | |_| |  _  | |_| |  _|
drawTitle    |    |_|     |_| | |     | |
drawImage    |                |_|     |_|

What I'd like is a something more akin to a flame graph, where the duration of each call is visible at a glance and nested calls are easier to spot:

display______________________________
 drawChildren_______________________
  drawTitle_______ drawImage_______
   display_______   display_______
    drawChildren     drawChildren

I've tried looking at the list view, but I found it cumbersome to navigate for the amount of calls and iterations within our problematic code. I know the chart view can be sorted, but is there any way to get a different view of the data?

Upvotes: 3

Views: 1744

Answers (1)

Holger
Holger

Reputation: 4183

I guess the commands which match best to your needs are

  • Trace.Chart.Nesting
  • Trace.ListNesting

You won't find this commands in the menu. You have to type them in the command line on the bottom of the TRACE32 application window (behind B::) or use the Softkey-Buttons below the command line to find these commands.

Note that you can synchronize the trace windows along each other with the option "/Track".

Upvotes: 4

Related Questions