Telerik® JustTrace™ by Progress

The Call Tree view represents all function calls captured by the profiler. Each snapshot contains the call tree structure of the profilee captured during the selected time range. The top-level node represents a thread or process and subsequent nodes represent a method.

Call Tree

Each node of the Call Tree view contains the following information:

  • Name - process, thread or method name.
  • Own Time (ms) - time spent in this node (excluding children). Percentage is measured against the total running time of the thread.
  • Total Time (ms) - total time spent in this call. Percentage is measured against the total running time of the thread.
  • Hit Count - number of times this method has been called (for tracing) or number of samples taken inside it (for sampling)

The Merge Threads option is on by default. If it is switched the call trees of all threads are presented as a single process call tree. The times, hit counts and called functions of identical thread call trees are accumulated and merged.

The Signatures option is used to control whether to display the parameters of each function in the Name column. You can switch it off to reduce the amount of text on the screen.

The Average Times option is available only when Use tracing profiler has been selected in the profiler options. It is used to control whether to display average times per call in the Total Time and Own Time columns. Average values are equal to the actual accumulated values divided by the hit count.

When you right click an item in the call tree, the following context menu shows up:

Call Tree Context Menu
  • Show in New View - opens a new view with the clicked node as its root. This is helpful if you want to remove unneeded context and reduce the call tree nesting. Moreover all methods' percentage information will be shown as a fraction of the root function's total time and thus make it easier to assess where the code needs optimization.
  • Merge All Calls in New View - opens a new view and merges all calls to the selected function in the entire process. This is helpful if you want to investigate how much total time it took, which functions it called and how the time spent in it is distributed among all its callees, regardless of a particular call site.
  • Show Caller Tree - opens a new Caller Tree view with all callers of the selected function presented as child nodes - a tree of callers. This can help you find where exactly it has been called.
  • Find in Root Call Tree - opens the search bar and populates it with the name of the selected function. You can use this command to easily find its other occurrences in the call tree. For more information refer to the Call Tree Navigation section.
  • Expand Hot Path - expands the subnodes which consumed the most total time. It recursively compares all immediate children and expands the dominant one on each step. This process stops if a dominant function doesn't exist or if a leaf node is reached. All expanded nodes that are on the path are marked with an icon for easier discovery.
  • Show Just My Code - toggles the user code filter for this node. When turned off all non-user code under this node is shown. When on, all non-user code between this node and child user code nodes down the tree is removed and user code child nodes are brought up (hoisted). Hoisted calls are marked with the hoisted call icon.

    Clicking the expand filtered icon next to the node name also toggles filtering. You can control which assemblies are considered user code in the Assembly List view.

  • Group Minor Calls - toggles grouping of minor calls for the selected function. A minor call is defined as a call which has taken less than 1% of the total time of its parent. When the option is on, minor calls are merged into a single group node. When off, they are marked with the minor call icon.

    Clicking the expand minor calls icon next to the node name or double clicking the group node also toggles grouping.

  • View Source - activates the Source Code Viewer tab and opens the source file if it is available. If the source is unavailable JustTrace will decompile the class using JustDecompile and will show the generated source code.

Double clicking a node expands or collapses it. If the node is a minor calls group, double clicking will ungroup it.

By clicking the expand filtered or expand minor calls icons you can unfilter or ungroup a node's children.

Source-level profiling

With the Source-level profiling enabled, JustTrace will show timings and hit counts for all methods that have source code available.

Call Tree Source Level Profiling

Selecting a method from the Call Tree will open its source code (if available). Inside the source code viewer, you can see line-by-line information about:

  • Total Time - total time spent in this particular line.
  • Average Time - average values are equal to the actual accumulated values divided by the hit count. To see average times you will need to enable them by clicking on Average Times in the ribbon.
  • Hit Count - number of times the line has been called.

Call Tree Navigation

Navigation Bar

You can use the navigation bar to search for all occurrences of a specified function in the tree. To show it press Ctrl+F or click the Show Search button in the ribbon. It contains an autocomplete text box for entering the full name of the searched function and four buttons for navigation between matches – go to first, go to previous, go to next and go to last. If the specified function has one or more overloads, they will consecutively be given as results.

Another way for finding all occurrences of a function is to right click on it in any of the Call Tree, All Methods List, Caller Tree or Hot Spots views and choose Find in Root Call Tree from the context menu.

See Also