折叠调用
调用树 可以通过折叠对分析无意义的调用组来简化。 即系统函数调用链和递归调用链。
折叠系统调用
系统调用是非用户代码的调用,例如调用 System 和 Microsoft 命名空间中的方法。 通常,这些调用会被过滤掉,并以灰色字体显示在 调用树 中。 使用 folding 隐藏系统调用链:
可以折叠的系统调用链会用
图标标记。已折叠的调用链会用
图标标记。请注意,您可以将 mark user assemblies 标记为系统程序集。
折叠一组系统调用链
选择包含系统调用的所需调用链。
点击
或按
Ctrl+Space
以折叠调用。
展开一组系统调用链
选择包含系统调用的所需调用链。
点击
或按
Ctrl+Space
以展开调用。
示例

例如,如果在上述示例中配置了折叠以使所有系统调用必须折叠, 调用树 将如下所示:
UserMethod1
      |  UserMethod2
      |      |  SystemMethod2
      | 
SystemMethod1
         |  UserMethod1
         |  UserMethod2
            |  SystemMethod1
折叠递归调用
递归调用栈可能很深且难以分析。 因此,包含多个递归调用的复杂调用栈需要几乎无限的栈滚动。 为了简化此类调用栈的分析,您可以折叠递归调用。 当递归调用链被折叠时,dotTrace 会重新计算此调用树(它汇总了特定方法在所有递归子树中的调用时间)并通过方法签名呈现信息:
递归调用会用
图标标记。已折叠的递归调用会用
图标标记。
折叠递归调用
在 调用树 中选择一个递归函数调用。
点击
以折叠函数调用。
展开递归调用
在 调用树 中选择一个递归函数调用。
点击
以展开函数调用。
示例
请参考一个示例,以更好地理解 dotTrace Viewer 在递归调用被折叠时如何计算调用时间。

如果在上述示例中,您从调用 AUserMethod1 开始折叠递归调用, 调用树 将如下所示(每个字母代表调用的自身时间)。
UserMethod1   A + B + C + D + E + F + G + H + I
      |  UserMethod2 E + G
      |      |  SystemMethod1 G
      |  SystemMethod1 C + H
      |  SystemMethod2 I