dotTrace 2025.2 Help

开始使用时间线分析

在时间线分析期间,dotTrace 收集了临时调用堆栈和线程状态数据。 您获得的关于调用时间的数据与 采样 相同,但绑定到时间线。 通过这种方式,您不仅可以分析典型的“最慢的方法是什么?”问题,还可以分析事件顺序确实重要的问题,例如 UI 冻结、过多的垃圾回收、不均匀的工作负载分布、不足的文件 I/O 等。

运行分析器并获取快照

要开始时间线分析,请在 配置会话时选择 时间线 分析类型。

收集快照的过程与 性能分析期间的过程相同。 您只需在应用程序执行期间点击 获取快照并等待 按钮。 要分析收集的时间线分析快照,您需要使用一个单独的 dotTrace 组件,称为 dotTrace Viewer

首次查看时间线快照

dotTrace Viewer 用户界面

查看器中的分析工作流程非常简单:您只需使用过滤器对收集的临时数据进行切片和分解。

那么,过滤器在哪里? 实际上,您在屏幕上看到的几乎所有 UI 元素不仅显示数据,还允许应用特定的过滤器。 过滤器工作的结果始终是一组由特定条件选择的时间间隔或点事件。 例如,点击 事件 | 文件操作 将告诉 dotTrace 选择所有线程上应用程序执行文件 I/O 操作的所有时间间隔。 点击 主要 线程列表中的 线程选择主线程的生命周期

当然,过滤器可以串联在一起。 如果您依次激活上述两个过滤器,您将获得结果过滤器: 选择主线程执行文件 I/O 操作的所有时间间隔。 通过仔细组合过滤器,您几乎可以调查应用程序的每个方面。

如何操作

现在让我们看看 dotTrace Viewer 的最重要用例。

查找并选择高 CPU 使用率的时间间隔

当您需要评估整体应用程序性能并查找具有最高自身时间的方法时,高 CPU 使用率的时间间隔是主要关注点。 您可以使用 进程概览图快速找到并选择这些时间间隔:

find_cpu_usage.png

查找最慢的方法并查看其调用树

一旦找到您感兴趣的时间间隔,下一步是找到该时间间隔内最慢的方法并检查方法的调用树。 后者将帮助您确定“为什么方法很慢”或“方法的哪些具体子调用占用了大部分时间”。 您可以通过使用由 调用堆栈 窗口组成的 热点列表(显示时间间隔内自身/总时间最高的方法)和 调用树执行这两个操作:

slowest_method_call_tree.png

快速了解方法中发生的情况

从 2017.1 版本开始,dotTrace Viewer 提供了非常有用的 子系统功能。 子系统的目的是快速回答主要问题“我的应用程序到底发生了什么?”,以及更具体的问题,例如“是什么导致了性能下降?”或“是什么分配了这么多内存?”。 性能下降是否与文件操作、JIT、字符串处理或仅仅是代码中的一些过多工作有关? 子系统过滤器是显示选定时间间隔内时间如何分布在各种活动中的唯一位置。 在下面的示例中,子系统栏显示方法中的主要时间被锁争用占用:

going_on_method.png

查看方法的父级调用

在检查有问题的方法时,不仅要检查其子调用,还要了解方法本身是如何被调用的。 为此,您可以将 调用树 切换到 回溯模式。 在此模式下,您可以看到执行路径直至堆栈中的第一个方法(因此,从某种意义上说, 回溯调用树 的反转):

parent_calls.png

通过名称查找方法

有时,您需要检查某个特定方法的性能:它需要多长时间,确切地在时间线上被调用的位置,等等。 在这种情况下,您可以通过名称找到您感兴趣的方法。 例如,在下面的示例中,我们将找到 Factorial 方法:

find_by_name.png

请注意,dotTrace Viewer 在找到方法后,会自动应用该方法的过滤器。

查找 UI 冻结的原因

UI 冻结的分析是 dotTrace 最擅长的领域。 您的应用程序 GUI 冻结的时间间隔会被自动检测到。 通常,您只需选择一个 UI 冻结并检查 热点列表:

ui_freeze_cause.png

查找过多内存分配的原因

过多的内存分配,或者更准确地说,其以垃圾回收形式表现的后果,可能对应用程序性能产生重大影响。 因此,对于性能分析来说,了解应用程序中内存分配的来源非常重要。 下面的示例显示了如何使用 内存分配事件来确定分配最多内存的热点:

memory_allocation.png

跟踪 HTTP 请求

在分析 Web 应用程序中的性能问题时,跟踪 HTTP 请求的能力非常重要。 dotTrace 允许您以与任何应用性能管理 (APM) 系统相同的方式跟踪事务,即您可以过滤特定 URL 的请求,查看其背后的 HTTP 方法,以及服务器为处理请求所执行的所有操作,例如 SQL 事务或 .NET 代码。 此外,dotTrace 相较于 APM 系统具有显著优势,因为它提供了完整的调用树分析功能:

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