服务跟踪查看器

Windows Communication Foundation (WCF) 服务跟踪查看器可帮助分析 WCF 侦听器所生成的活动跟踪 (*.svclog) 诊断跟踪。服务跟踪查看器为合并、查看和筛选跟踪消息提供了一种简单方法，可以诊断、修复和验证 WCF 服务问题。

有关 WCF 提供的跟踪功能的其他信息，请参见服务跟踪查看器资源。

Send comments about this topic to Microsoft.


使用服务跟踪查看器

本节介绍有关使用服务跟踪查看器来查看和分析由 Windows Communication Foundation (WCF) 生成的跟踪数据的信息。

配置跟踪

若要为 WCF 消息配置跟踪，请使用服务配置编辑器 (SvcConfigEditor.exe)。有关配置跟踪的更多信息，请参见“Service Configuration Editor Help”（服务配置编辑器帮助）。

本节内容

打开跟踪文件

介绍如何打开任何受支持的跟踪文件，如何添加和集成更多跟踪文件，如何同时打开和合并一组跟踪文件。
查看跟踪数据

提供四个不同的视图：活动视图、项目视图、消息视图和图形视图。
筛选跟踪

使跟踪文件的分析更为容易。
查找跟踪数据

介绍如何定位所需的跟踪数据。
定位跟踪数据

提供各种在跟踪中定位的方法。


打开跟踪文件

服务跟踪查看器支持三种文件类型：

  • Windows Communication Foundation (WCF) 跟踪文件 (.svclog)

  • 事件跟踪文件 (.etl)

  • Crimson 跟踪文件

打开跟踪数据

通过服务跟踪查看器，可以打开任何受支持的跟踪文件、添加和集成附加跟踪文件，或同时打开和合并一组跟踪文件。

打开跟踪文件

  1. 通过使用命令窗口定位到 WCF 安装位置，然后键入 SvcTraceViewer.exe，可以启动服务跟踪查看器。
注意:
TraceViewer 可以与两种文件类型相关联：.svclog 和 .stvproj。在命令行中，可以使用两个参数来注册和注销文件扩展名。

/register：将文件扩展名“.svclog”和“.stvproj”注册为与 SvcTraceViewer.exe 相关联

/unregister：注销文件扩展名“.svclog”和“.stvproj”与 SvcTraceViewer.exe 的关联

  1. 当服务跟踪查看器启动时，单击“文件”，然后指向“打开”。定位到跟踪文件的存储位置。

  2. 双击要打开的跟踪文件。此外，按住 Shift 时单击多个跟踪文件，还可以同时选择和打开这些文件。服务跟踪查看器合并所有文件的内容并显示为一个视图。例如，可以同时打开客户端和服务的跟踪文件。如果在配置中已启用消息日志记录和活动传播，则此功能十分有用。通过这种方式，可以检查客户端和服务之间的消息交换。此外，还可以将多个文件拖动到查看器中，或使用“项目”选项卡。有关详细信息，请参见“管理项目”一节。

  3. 若要向打开的集合中添加更多跟踪文件，请单击“文件”，然后指向“添加”。在打开的窗口中，定位到跟踪文件的位置，然后双击要添加的文件。

事件跟踪和 Crimson 跟踪

查看器的本机格式为 WCF 发出的活动跟踪格式。对于以其他格式发出的跟踪，必须先进行转换，这样查看器才会显示它们。目前，除了活动跟踪格式之外，查看器还支持事件跟踪和 crimson 跟踪。

打开不包含活动跟踪的文件时，查看器会尝试转换该文件。必须为将包含转换后的跟踪数据的文件指定名称和位置。数据转换完毕，查看器即会显示新文件的内容。

注意:
转换需要磁盘空间来存储转换后的跟踪数据。开始转换之前，请确保有足够的可用磁盘空间来存储数据。否则，转换将失败。

管理项目

查看器支持项目，以便查看多个跟踪文件。例如，如果有客户端跟踪文件和服务跟踪文件，可以将它们添加到项目中。之后，每次打开该项目时，都会同时加载项目中的所有跟踪文件。

有两种管理项目的方法。

  • 在“文件”菜单中，可以打开、保存和关闭项目。

  • 在“项目”选项卡中，可以将文件添加到项目中。

加载大型跟踪文件

跟踪文件可能非常大。例如，如果启用“详细”级别跟踪，在运行几分钟后，结果跟踪文件很容易就可以达到数百兆字节，甚至更大，具体取决于网络速度和通信模式。

在服务跟踪查看器中打开极大型的跟踪文件时，系统性能可能会受到负面影响。加载速度和加载后的响应时间可能会很慢。实际速度不总是相同，具体取决于硬件配置。在大多数 PC 中，如果加载大于 200M 的跟踪文件，则会严重影响性能。对于大于 1G 的跟踪文件，此工具可能会用尽所有可用的内存，或者长时间停止响应。

为避免在分析大型跟踪文件时加载和响应时间变慢，服务跟踪查看器提供了一种称为“部分加载”的功能，即一次仅加载跟踪文件的一小部分。例如，您可能有一个大于 1GB 的跟踪文件，在服务器上已运行了几天。当发生某些错误，又想分析该跟踪时，您无需打开整个跟踪文件。您可以加载可能发生错误的某个时间段内的跟踪。由于缩小了范围，跟踪查看器可以更快地加载文件，而您可以使用一个较小的数据集来标识这些错误。

启用部分加载

部分加载不需要手动启用。如果试图加载的跟踪文件的总大小超过 40MB，服务跟踪查看器会自动显示“部分加载”对话框，供您选择要加载的部分。

注意:
由于跟踪在时间跨度内不一定均匀分布，因此，在“部分加载”工具栏中指定的时间段长度也不一定与显示的加载大小成正比。实际加载大小可以小于部分加载对话框中的“估计大小”。

调整部分加载

部分加载跟踪文件之后，可能希望更改已加载的数据集。通过调整查看器顶部的“部分加载”工具栏，可以实现此操作：

  1. 使用鼠标移动工具栏，或输入“开始时间”和“结束时间”。

  2. 单击“调整”按钮。


查看跟踪数据

Windows Communication Foundation (WCF) 使用活动跟踪格式发出跟踪。在活动跟踪模型中，各个跟踪按其目的在活动中进行分组。逻辑控制流在活动之间传输。例如，在应用程序的生存期活动期间，许多“消息发送活动”会出现和消失。

在运行时，WCF 创建一组活动，描述系统中正在进行的操作。

切换到不同视图

服务跟踪查看器提供下列四种不同的视图。它们以选项卡的形式显示在查看器的左侧窗格，从“视图”菜单也可以访问这些视图。

  • 活动视图

  • 项目视图

  • 消息视图

  • 图形视图

活动视图

一旦导入跟踪文件，就可以查看分组到活动中并显示在左侧窗格“活动”窗口的文件的内容。

此窗口显示活动名称、活动中的跟踪数目、持续时间以及开始和结束时间。

单击所列出的任一活动，该活动中的跟踪都会显示在右侧跟踪窗格中。然后，选择一个跟踪即可查看其详细信息。

通过按“Ctrl”或“Shift”键并单击所需活动，可以选择多个活动。跟踪窗格显示所选活动的所有跟踪。

双击某个活动可以在“图形”视图中显示该活动。另一种方式是选择活动，然后切换到“图形”视图。

注意:
活动“000000000000”是一个特殊活动，不能在“图形”视图中显示。因为所有其他活动都与它链接，因此显示此活动会严重影响性能。

单击列标题可以对活动列表进行排序。包含警告跟踪的活动具有黄色背景，而包含异常跟踪的活动具有红色背景。

活动具有不同的类型，每种类型都与每个活动左侧的一个图标相对应。要了解其含义，请参阅“了解跟踪图标”一节。

项目视图

在此视图中，可以管理当前项目中的跟踪文件。有关详细信息，请参见“管理项目”一节。

图形视图

服务跟踪查看器最强大的功能之一就是“图形”视图，它以图表形式显示给定活动的跟踪数据。通过图表形式，可以查看事件的逐步执行过程，可以查看当数据在多个跟踪文件之间移动时跟踪文件之间的相互关系。

若要切换到“图形”视图，请在“活动”视图中选择活动，然后单击“活动”选项卡，或者在“消息”视图中单击消息日志跟踪。如果加载了多个跟踪文件，并且活动涉及来自多个文件的跟踪，则所有相关的跟踪都会显示在“图形”视图中。双击活动和消息日志跟踪也可以切换到“图形”视图。

在“图形”视图中，每个垂直列都表示一个活动，列中的每个块都表示一个跟踪。活动按进程（或线程）分组。活动之间的小箭头表示传输。进程之间的大箭头表示消息交换。选定的活动始终为黄色。

在图形中选择跟踪

  1. 单击图形中的某个块。

  2. 使用向上键和向下键选择其相邻的跟踪。

  3. 查看“跟踪窗格”和“详细信息窗格”中的跟踪信息。

展开或折叠活动传输

当选定的活动传输到另一个活动时，可以展开活动传输。这样可以追踪这些传输。这一功能类似于“活动”菜单中的“追踪传输”（请参见“定位”一节）。

展开或折叠活动传输

  1. 定位到传输图标左侧带有“+”号的传输跟踪。

  2. 单击“+”号，或使用键盘按“Ctrl”和“+”。

  3. 下一个活动出现在图形中。

  4. 在传输图标左侧会出现一个“-”号。单击“-”号或按 Ctrl 和“-”，则会折叠活动传输。

注意 当活动具有多个到它的传输时，如果展开其中一个传输，则会显示从根到新活动的活动。这些新活动以折叠形式显示。如果希望查看这些活动的详细信息，请在图形标题中单击展开图标将它们垂直展开。

垂直展开或折叠活动

查看器通过折叠活动在活动图形中隐藏不必要的详细信息。在折叠的活动中，不会显示各个跟踪。仅显示重要的跟踪传输。如果希望查看活动中的所有跟踪，可通过单击图形标题中该活动的展开符号将活动垂直展开：

垂直展开或折叠活动

  1. 单击活动标题中的“-”图标可垂直折叠活动。

  2. 请注意，活动中仅显示重要的传输、消息日志、警告和异常跟踪。

  3. 单击活动标题中的“+”图标可垂直展开活动。

  4. 请注意，所有跟踪都显示在图形中。

选项

在“图形”视图中可以从“选项”菜单中选择两个选项。

  • 显示活动边界跟踪：如果未选中此选项，则忽略图形中的活动边界跟踪。

  • 显示非消息详细跟踪：如果未选中此选项，则忽略除消息跟踪以外的其他详细级别跟踪。大多数情况下，详细级别的跟踪对于分析不是十分重要。如果不希望分析详细级别的跟踪，而只想关注更重要的跟踪，则此选项十分有用。

布局模式

查看器具有两种布局模式：“进程”和“线程”。此设置定义最大组织单位。默认的布局模式是“进程”，这种模式下，活动在图形中是按进程分组的。

执行列表

从该下拉列表中，可以选择要在图形中显示的进程或线程。例如，如果有两个客户端（A 和 B）的跟踪文件，并且打开了一个服务，而您只想在图形中显示该服务和客户端 A，则可以从列表中取消选择客户端 B。

查看跟踪详细信息

若要查看某个跟踪的详细信息，请在“跟踪”窗格中选择该跟踪。详细信息显示在“详细信息”窗格中。

此外，还可以查看 TraceViewer 工具（可能为英文网页）主题，该主题列出了跟踪查看器工具中所用的全部图标及其相应含义。

跟踪窗格

视图中的右上窗格为“跟踪”窗格。它列出了所选活动中的所有跟踪以及附加信息，例如说明、跟踪级别、线程 ID、进程名称和其他信息。

通过右击跟踪，并选择“将跟踪复制到剪贴板”，可以将跟踪的原始 XML 复制到剪贴板。

详细信息窗格

视图的右下窗格为“详细信息窗格”。它提供三个选项卡来查看跟踪的详细信息。

“格式化”视图以更为有序的方式显示信息。它以表和树的形式列出所有已知的 XML 元素，使得信息的读取和理解更加容易。

“XML”视图显示对应于所选跟踪的 XML。它支持突出显示和语法着色。当使用“查找”来搜索字符串时，它会突出显示搜索结果。

“消息”视图显示消息日志跟踪中 XML 的消息部分。选择非消息跟踪时，该视图不可见。


筛选跟踪

若要使跟踪文件的分析更加容易，可以通过三种不同的方式对其进行筛选。

  • 筛选器工具栏提供对预定义筛选器的访问。通过“视图”菜单可以访问该工具栏。

  • 查看器的内置筛选器可用来有选择地对部分 WCF 基础结构跟踪进行筛选。默认情况下，此筛选器设置为允许所有基础结构消息通过。此筛选器的设置在“视图”菜单下的“筛选器选项”子菜单中定义。

  • 自定义 XPath 筛选器赋予用户对筛选的完全控制权。在“自定义筛选器”菜单中可对这些筛选器进行定义。

仅显示通过所有活动筛选器的跟踪数据。

使用筛选器工具栏

筛选器工具栏显示在工具的顶部。如果它未显示，可以在“视图”菜单中将其激活。此工具栏具有三个组件：

  • 查找：“查找”定义在筛选操作中要查找的主题。例如，如果要查找在进程 X 的上下文中发出的所有跟踪，请将该字段设置为 X，并将“搜索范围”字段设置为“进程名称”。如果选择了某个基于时间的筛选器，则此字段更改为 DateTime 选择器控件。

  • 搜索范围：此字段定义要应用的筛选器类型。有效值包括“进程名称”、“时间范围”、“事件 ID”和“终结点地址”。

  • 级别：级别设置定义筛选器允许的最小跟踪级别。例如，“错误及严重错误”仅显示“错误”和“严重”级别的跟踪。此筛选器与“查找”和“搜索范围”指定的条件结合使用。

“立即筛选”按钮将启动筛选操作。某些筛选器，尤其是当它们应用于大型数据集时，需要很长时间才能完成操作。筛选操作启动后，可以通过按“立即筛选”按钮位置上显示的“停止”按钮来取消筛选操作。

“清除”按钮可重置所有筛选器，从而允许所有跟踪通过。

筛选器选项

查看器可以自动从视图中移除 WCF 跟踪。它可以有选择地移除由 WCF 的特定区域发出的跟踪，例如，从视图中移除与事务相关的跟踪。

此筛选器的设置在“视图”菜单之下的“筛选器选项”子菜单中定义。

自定义筛选器

如果熟悉 XML 路径语言 (XPath)，则可以使用它来构造自己的自定义筛选器，以便搜索任何相关的 XML 元素的跟踪数据。可以通过筛选器工具栏访问这些筛选器。

自定义筛选器可以使用参数。此外，还可以导入现有的自定义 XPath 筛选器。

创建自定义筛选器

可以通过两种方式创建筛选器：

使用模板向导创建自定义筛选器

可以单击现有跟踪并基于此跟踪的结构来创建筛选器。此示例创建基于线程 ID 的自定义筛选器。

  1. 在查看器右上区域的跟踪窗格中，选择包含待筛选元素的跟踪。

  2. 单击位于跟踪窗格顶部的“创建自定义筛选器”按钮。

  3. 在出现的对话框中，输入筛选器名称。在此示例中，输入“Thread ID”。此外，还可以提供筛选器说明。

  4. 左侧的树视图显示在步骤 1 中选择的跟踪记录的架构。浏览到要为其创建条件的元素。在此示例中，浏览到最有可能位于 System.Execution 节点的 ThreadID。在树视图中双击“ThreadID”属性。这样可在对话框右侧为该属性创建一个表达式。

  5. 将 ThreadID 条件的参数字段从“无”更改为“{0}”。通过这一步骤，在应用筛选器时就可以配置 ThreadID 值。（请参见“如何应用筛选器”一节）最多可以定义四个参数。条件是用“或”运算符组合在一起的。

  6. 单击“确定”创建筛选器。

注意 一旦使用模板向导创建了筛选器，就只能手动对其进行编辑。对以前创建的筛选器，是不能激活向导的。此外，在模板向导中创建的 XPath 筛选器的条件是用“或”运算符组合在一起的。如果需要“与”运算，可以在筛选器创建之后编辑筛选器表达式。

手动创建自定义筛选器

手动创建自定义 XPath 筛选器

  1. 在“视图”菜单上单击“自定义筛选器”菜单项。

  2. 在出现的对话框中单击“新建”。

  3. 至少应指定筛选器名称和 XPath 表达式。

  4. 单击“确定”。

应用自定义筛选器

应用自定义筛选器

  1. 在筛选器工具栏的“搜索范围”字段中选择要应用的筛选器。对上一示例，选择“Thread ID”。

  2. 在“查找内容”字段中指定要查找的值。在此示例中，输入要搜索的线程 ID。

  3. 单击“立即筛选”，然后观察操作结果。

如果筛选器使用多个参数，请使用“;”作为分隔符，在“查找内容”字段中输入这些参数。例如，以下字符串定义 3 个参数：“1;findValue;text”。查看器将“1”应用到筛选器的 {0} 参数。“findValue”和“text”分别应用到 {1} 和 {2}。

共享自定义筛选器

在跟踪查看器工具运行的位置之间，可以共享自定义筛选器。可以将一个实例中的筛选器导出到一个定义文件，然后将该文件导入到另一个位置。

导入自定义筛选器

  1. 在“视图”菜单上单击“自定义筛选器”。

  2. 在打开的对话框中单击“导入”按钮。

  3. 定位到自定义筛选器文件 (.stvcf)，单击该文件，然后单击“打开”按钮。
导出自定义筛选器

  1. 在“视图”菜单上单击“自定义筛选器”。

  2. 在打开的对话框中选择要导出的筛选器。

  3. 单击“导出”按钮。

  4. 指定自定义筛选器定义文件 (.stvcf) 的名称和位置，然后单击“保存”按钮。
注意:
这些自定义筛选器只能从服务跟踪查看器导入和导出。其他工具无法读取这些筛选器。


查找跟踪数据

本节介绍如何定位所需的跟踪数据。

查找跟踪数据

查看器提供了查找数据的两种不同方法：

  • 通过查找工具栏，可以快速访问最常用的查找选项。

  • “查找”对话框提供了更多查找选项。通过“编辑”菜单或快捷键 Ctrl + F，可以访问该对话框。

“查找”工具栏显示在查看器的顶部。如果它未显示，可以在“视图”菜单中将其激活。此工具栏具有两个组件：

  • 查找内容：可在其中输入搜索关键字。

  • 查找范围：可在其中输入搜索范围。可以选择在所有活动中搜索，也可以选择仅在当前活动中搜索。

查找对话框提供两个附加选项：

  • 查找目标：如果选择“原始日志数据”选项，则会在所有原始数据中搜索关键字。如果选择“XML 文本”和“XML 属性”选项，则仅在 XML 元素中搜索。如果选择“已记录消息”选项，则仅在消息中搜索关键字。

  • 忽略根活动：搜索会忽略“000000000000”活动中的跟踪。如果根活动有数千个跟踪，而其中大多数为传输跟踪时，选择此选项会提高大型跟踪文件的性能。


定位跟踪数据

由于在应用程序运行时期间，跟踪是逐步记录的，因此定位跟踪有助于调试应用程序。服务跟踪查看器提供多种定位跟踪方法。

逐步向前或逐步向后

如果将每个跟踪都看作程序中的一行代码，则逐步向前非常类似于 Visual Studio 集成开发环境 (IDE) 中的“逐过程”。区别在于，在跟踪中还可以逐步向后。逐步向前意味着移动到活动中的下一个跟踪。

  • 逐步向前：使用“活动”菜单，或者按“F10”。此外，还可以在跟踪窗格中使用“向下”箭头键。

  • 逐步向后：使用“活动”菜单，或者按“F9”。此外，还可以在跟踪窗格中使用“向上”箭头键。

追踪传输

传输跟踪是跟踪文件中的特殊跟踪。一个活动可以通过传输跟踪而传输到另一个活动。例如，“活动 A”可以传输到“活动 B”。在这种情况下，在“活动 A”中存在一个名称为“至: 活动”并带有传输图标的传输跟踪。此传输跟踪是两个跟踪之间的链接。在“活动 B”中，也可能存在一个传输跟踪，在活动结束时传输回“活动 A”。这类似于程序中的函数调用：活动 A 调用活动 B，然后活动 B 返回。

“追踪传输”类似于调试器中的“单步执行”。它追踪从活动 A 到活动 B 的传输。它对其他跟踪没有任何影响。

有两种追踪传输的方法：使用鼠标或使用键盘。

  • 使用鼠标：在跟踪窗格中双击传输跟踪。

  • 使用键盘：选择传输跟踪，然后使用“活动”菜单中的“追踪传输”；或者按“F11”。

注意:
在很多情况下，当活动 A 传输到活动 B 时，活动 A 会等待，直到活动 B 传输回活动 A 为止。这意味着活动 A 在活动 B 主动跟踪期间没有记录跟踪。但是，也有可能活动 A 不等待，而是持续记录跟踪。此外，活动 B 还可能不传输回活动 A。因此在这个意义上，活动传输与函数调用仍有不同。在图形视图中可以更好地理解活动传输。

跳转到下一个或上一个传输

在分析当前活动时，可能希望快速找到它传输活动的目标。通过“跳转到下一个传输”，可以定位到活动中的下一个传输跟踪。一旦找到传输跟踪，就可以使用“追踪传输”来单步执行下一个活动：

  • 跳转到下一个传输：使用“活动”菜单；或者按“Ctrl + F10”。

  • 跳转到上一个传输：使用“活动”菜单；或者按“Ctrl + F9”。

在图形视图中定位

尽管在活动窗格和跟踪窗格中定位类似于调试，使用“图形”视图还是能提供更好的定位体验。有关更多信息，请参见查看跟踪数据。


服务跟踪查看器资源

有关 Windows Communication Foundation (WCF) 跟踪的更多信息，请参见下列资源：

  • MSDN 网站上的 Windows Communication Foundation（可能为英文网页）。

  • WCF 活动跟踪模型（可能为英文网页），这部分内容介绍活动跟踪。

  • 跟踪查看器工具（可能为英文网页），这部分内容列出了跟踪查看器工具中所用的全部图标及其相应含义。

  • 跟踪（可能为英文网页），这部分内容介绍一组有关 WCF 跟踪的概念性主题。

  • MSDN Library 中的构建 Windows Communication Foundation 服务简介（可能为英文网页）。

  • MSDN Library 中的 .NET System.Diagnostics 命名空间的类库文档（可能为英文网页）。

  • Windows Communication Foundation 技术论坛（可能为英文网页）。