dotTrace 2025.2 Help

折叠调用

调用树 可以通过折叠对分析无意义的调用组来简化。 即系统函数调用链和递归调用链。

折叠系统调用

系统调用是非用户代码的调用,例如调用 SystemMicrosoft 命名空间中的方法。 通常,这些调用会被过滤掉,并以灰色字体显示在 调用树 中。 使用 folding 隐藏系统调用链:

  • 可以折叠的系统调用链会用 未折叠链 图标标记。

  • 已折叠的调用链会用 已折叠链 图标标记。

  • 请注意,您可以将 mark user assemblies 标记为系统程序集。

折叠一组系统调用链

  1. 选择包含系统调用的所需调用链。

  2. 点击 未折叠链 或按 Ctrl+Space 以折叠调用。

展开一组系统调用链

  1. 选择包含系统调用的所需调用链。

  2. 点击 已折叠链 或按 Ctrl+Space 以展开调用。

示例

调用树示例

例如,如果在上述示例中配置了折叠以使所有系统调用必须折叠, 调用树 将如下所示:

UserMethod1
      |  UserMethod2
      |      |  SystemMethod2
      |  已折叠链 SystemMethod1
         |  UserMethod1
         |  UserMethod2
            |  SystemMethod1

折叠递归调用

递归调用栈可能很深且难以分析。 因此,包含多个递归调用的复杂调用栈需要几乎无限的栈滚动。 为了简化此类调用栈的分析,您可以折叠递归调用。 当递归调用链被折叠时,dotTrace 会重新计算此调用树(它汇总了特定方法在所有递归子树中的调用时间)并通过方法签名呈现信息:

  • 递归调用会用 递归调用 图标标记。

  • 已折叠的递归调用会用 递归调用 图标标记。

折叠递归调用

  1. 调用树 中选择一个递归函数调用。

  2. 点击 递归调用 以折叠函数调用。

展开递归调用

  1. 调用树 中选择一个递归函数调用。

  2. 点击 递归调用 以展开函数调用。

示例

请参考一个示例,以更好地理解 dotTrace Viewer 在递归调用被折叠时如何计算调用时间。

调用树示例

如果在上述示例中,您从调用 AUserMethod1 开始折叠递归调用, 调用树 将如下所示(每个字母代表调用的自身时间)。

递归调用 UserMethod1   A + B + C + D + E + F + G + H + I
      |  UserMethod2 E + G
      |      |  SystemMethod1 G
      |  SystemMethod1 C + H
      |  SystemMethod2 I

最后修改日期: 2025年 9月 28日