Fold Calls
The Call Tree can be simplified by folding groups of calls meaningless to analysis. Namely, chains of system function calls and recursive calls.
Fold system calls
System calls are calls of non-user code, for example, calls to methods from System
and Microsoft
namespaces. Normally, these calls are filtered out and are shown in Call Tree in gray font. Use folding to hide chains of system calls:
System call chains that can be folded are marked with the icon.
Folded call chains are marked with the icon.
Note that you can mark user assemblies as system ones.
To fold a chain of system calls
Select a desired call chain that contains system calls.
Click or press Ctrl+Space to fold the calls.
To unfold a chain of system calls
Select a desired call chain that contains system calls.
Click or press Ctrl+Space to unfold the calls.
Example
For instance, if in the example above folding is configured so that all system calls must be folded, Call Tree will look as follows:
UserMethod1
| UserMethod2
| | SystemMethod2
| SystemMethod1
| UserMethod1
| UserMethod2
| SystemMethod1
Fold recursive calls
Recursive call stacks can be deep and difficult to analyze. Thus, complex call stacks with multiple recursive calls require almost infinite stack scrolling. To simplify the analysis of such call stacks, you can fold recursive calls. When a chain of recursive calls is folded, dotTrace recalculates this call tree (it summarizes call times of a particular method in all recursive subtrees) and presents information by method signatures:
Recursive calls are marked with the icon.
Folded recursive calls are marked with the icon.
To fold a recursive call
Select a recursive function call in Call Tree.
Click to fold the function call.
To unfold a recursive call
Select a recursive function call in Call Tree.
Click to unfold the function call.
Example
Consider an example for better understanding of how dotTrace Viewer calculates call times when recursive calls are folded.
If in the example above you fold recursive calls starting from the call A UserMethod1
, Call Tree will look like follows (each letter stands for a call own time).
UserMethod1 A + B + C + D + E + F + G + H + I
| UserMethod2 E + G
| | SystemMethod1 G
| SystemMethod1 C + H
| SystemMethod2 I