Fold Calls
Available for: sampling, tracing, line-by-line, and timeline snapshots
The Call Tree can be simplified by folding groups of calls meaningless to analysis. Namely, chains of system function calls and recursive 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.
Select a desired call chain that contains system calls.
Click
or press Ctrl+Space to fold the calls.
Select a desired call chain that contains system calls.
Click
or press Ctrl+Space to unfold the calls.

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
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.
Select a recursive function call in Call Tree.
Click
to fold the function call.
Select a recursive function call in Call Tree.
Click
to unfold the function call.
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