dotTrace Viewer 概念
dotTrace Viewer 是一组过滤器和图表,允许您过滤和可视化分析数据。
分析类型和用户界面
dotTrace Viewer 的用户界面会根据您当前分析的快照类型而有所不同。 采样、 跟踪 和 逐行 快照提供的数据比 时间轴 快照少。
下图显示了在 dotTrace Viewer 中打开的同一应用程序的采样和时间线快照:
采样

以下工具窗口和过滤器不适用于 采样、 跟踪 和 逐行 快照: 时间线 图表; 事件、 间隔筛选器、 线程状态 过滤器; 事件、 SQL 查询、 传入 HTTP 请求、 文件 I/O 工具窗口,以及其他一些用户界面元素。
时间线

如您所见,时间线快照包含更多数据:关于内存分配、文件操作、用户界面卡顿和其他 ETW 事件的数据。 此外,它显示了更多的子系统,与采样快照不同,您可以在 时间线 图表上选择您感兴趣的任何时间间隔。
分析工作流程
在 dotTrace Viewer 中的快照分析意味着您可以使用过滤器对数据进行切片和分解——筛选器、 时间线/线程、 调用堆栈 等允许您按时间、线程、特定方法或其他数据应用过滤器。 过滤器工作的结果始终是一组由特定条件选择的时间间隔或点事件。 例如,您可以要求查看器“ 选择所有主线程正在运行的时间间隔 ”或“ 选择所有 MyMethod() 工作的时间间隔”。
在 dotTrace Viewer 中成功进行数据分析需要了解的几个概念。
- 一切都是过滤器
dotTrace Viewer 中的每个用户界面控件不仅用于设置特定过滤器,还用于显示一部分过滤后的信息。
例如, 线程状态 过滤器不仅允许您按线程状态应用过滤器,还显示了选定线程处于特定状态的持续时间。
所有当前过滤器都显示在查看器的主栏上。 您可以移除任何过滤器,或者使用 撤消 和 重做 按钮浏览过滤器历史记录。

- 过滤器是串联在一起的
过滤器可以分组为链。 复杂的过滤器组合允许您分析应用程序的几乎任何方面。
例如,如果您组合 选择所有主线程正在运行的时间区间 和 选择所有执行阻塞垃圾回收的时间区间 过滤器,您将得到结果过滤器 选择所有主线程在垃圾回收期间运行的时间区间。 换句话说,这种过滤器组合将仅保留主线程切换垃圾回收的时间间隔。 调用栈 | 热点 过滤器将向您显示切换集合的确切方法。
在不同的标签页中分析快照
您可以同时对同一快照执行多次分析。 您可以在一个标签页中保留一组过滤器,并在另一个标签页中使用不同的过滤器探索同一快照。

要在新标签页中打开没有过滤器的快照,请点击标签页标题中的
。
要将当前分析复制到新标签页,请使用 Ctrl+T 组合键或 克隆标签页 上下文菜单项。
集成在 Visual Studio 中的 dotTrace Viewer
如果在安装 dotTrace 时选择了 Visual Studio 集成 选项,您的 Visual Studio 将获得内置的 dotTrace 分析器。 它通过 性能分析器 工具窗口( )表示。 集成的 dotTrace 是独立 dotTrace Viewer 的对应版本,专为在 Visual Studio 中使用而设计。 这两种工具的用户界面几乎相同。 您机器上所有 dotTrace 实例之间的快照列表是同步的。

使用集成查看器的优缺点:
更无缝的体验。 由于分析是在 Visual Studio 中执行的,因此无需在源代码和分析器之间切换。
从调用树导航到源代码,反之亦然。*
您可以从 调用树 (分析结果中)中的特定方法导航到其声明,也可以从代码中的方法声明导航到其在 调用树 中的出现。
在 Visual Studio 中分析大量分析数据可能会因为屏幕空间不足而显得不便。