Windows Communication Foundation (WCF) 服务跟踪查看器工具可帮助你分析 WCF 生成的诊断跟踪。 服务跟踪查看器提供了一种在日志中轻松合并、查看和筛选跟踪消息的方法,以便诊断、修复和验证 WCF 服务问题。
配置跟踪
诊断跟踪提供的信息显示了应用程序操作过程中所发生的情况。 顾名思义,您可以从操作来源跟踪操作直至目标,也可以通过中间点进行跟踪。
可以通过应用程序的配置文件来配置跟踪—Web.config 适用于 Web 托管应用程序,或者 Appname.config 适用于自承载应用程序。 以下是一个示例:
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="sdt"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "SdrConfigExample.e2e" />
</listeners>
</source>
</sources>
</system.diagnostics>
在此示例中,指定跟踪侦听器的名称和类型。 侦听器命名 sdt
,标准 .NET Framework 跟踪侦听器(System.Diagnostics.XmlWriterTraceListener)添加为类型。 该initializeData
特性用于将该侦听器的日志文件名设置为SdrConfigExample.e2e
。 对于日志文件,可以将完全限定的路径替换为简单的文件名。
该示例在名为 SdrConfigExample.e2e 的根目录中创建一个文件。 使用跟踪查看器打开文件时,如“打开和查看 WCF 跟踪文件”部分中所述,可以看到已发送的所有消息。
跟踪级别由 switchValue
设置控制。 下表描述了可用的跟踪级别。
跟踪级别 | DESCRIPTION |
---|---|
危急 | - 记录 Fail-Fast 和事件日志条目,以及跟踪相关性信息。 下面是使用“关键”级别时的一些示例: - 由于未经处理的异常,您的 AppDomain 已关闭。 - 应用程序无法启动。 - 导致失败的消息源自进程 MyApp.exe。 |
错误 | - 记录所有异常。 在以下情况下,可以使用错误级别: - 你的代码由于无效强制转换异常而崩溃。 - “无法创建终结点”异常导致应用程序在启动时失败。 |
警告 | - 存在可能导致错误或严重故障的条件。 在以下情况下,可以使用此级别: - 应用程序接收的请求数超过其限制设置允许的请求数。 - 接收队列已达到其预设容量的 98%。 |
信息 | - 生成有助于监视和诊断系统状态、测量性能或分析的消息。 可以利用这些信息进行容量规划和性能管理。 在以下情况下,可以使用此级别: - 消息到达 AppDomain 并被反序列化后发生故障。 - 创建 HTTP 绑定时发生失败。 |
详细 | - 同时针对用户代码和服务的调试级别跟踪。 在以下情况下设置此级别: - 不确定在发生故障时调用了代码中的哪个方法。 - 配置了不正确的终结点,服务无法启动,因为预留存储中的条目已锁定。 |
ActivityTracing | 处理活动与组件之间的流事件。 此级别允许管理员和开发人员关联同一应用程序域中的应用程序。 - 活动边界跟踪:启动/停止。 - 传输跟踪。 |
可用于 add
指定要使用的跟踪侦听器的名称和类型。 在示例配置中,侦听器命名 sdt
,标准 .NET Framework 跟踪侦听器 (System.Diagnostics.XmlWriterTraceListener
) 将添加为类型。 用于 initializeData
设置该侦听器的日志文件的名称。 此外,还可以用一个简单文件名来替换完全限定路径。
从 .NET Framework 4.8 开始,某些高对比度主题中的 ComboBox 控件以正确的颜色显示。 可以通过从 svcTraceViewer.exe.config 文件中删除以下设置来禁用此更改:
<AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false;Switch.UseLegacyAccessibilityFeatures.2=false" />
使用服务跟踪查看器工具
打开和查看 WCF 跟踪文件
服务跟踪查看器支持三种文件类型:
WCF 跟踪文件 (.svcLog)
事件跟踪文件 (.etl)
Crimson 跟踪文件
使用服务跟踪查看器可以打开任何受支持的跟踪文件、添加和集成其他跟踪文件,或同时打开和合并一组跟踪文件。
打开跟踪文件
- 使用命令窗口启动服务跟踪查看器,导航到 WCF 安装位置(C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin),然后键入
SvcTraceViewer.exe
。
注释
服务跟踪查看器工具可以与两种文件类型相关联:.svclog 和 .stvproj。 可以在命令行中使用两个参数来注册和注销文件扩展名。
/register:将文件扩展名“.svclog”和“.stvproj”与 SvcTraceViewer.exe 的关联进行注册
/unregister:注销文件扩展名“.svclog”和“.stvproj”与 SvcTraceViewer.exe 的关联
服务跟踪查看器启动时,单击“ 文件 ”,然后指向 “打开”。 导航到存储跟踪文件的位置。
双击要打开的跟踪文件。
注释
单击多个跟踪文件时按 Shift 键,以同时选择并打开它们。 服务跟踪查看器合并所有文件的内容并显示一个视图。 例如,可以打开客户端和服务的跟踪文件。 在配置中启用消息日志记录和活动传播时,这非常有用。 通过这种方式,可以检查客户端和服务之间的消息交换。 还可以将多个文件拖到查看器中,或使用 “项目 ”选项卡。有关详细信息,请参阅“管理项目”部分。
若要将其他跟踪文件添加到打开的集合,请单击“ 文件 ”,然后指向 “添加”。 在打开的窗口中,导航到跟踪文件的位置,然后双击要添加的文件。
谨慎
不建议加载大于 200MB 的跟踪日志文件。 如果尝试加载大于此限制的文件,加载过程可能需要很长时间,具体取决于计算机资源。 服务跟踪查看器工具可能长时间无法响应,或者可能会耗尽计算机的内存。 建议您配置部分加载以避免这种情况。 有关如何执行此作的详细信息,请参阅“加载大型跟踪文件”部分。
事件跟踪和 Crimson 跟踪
查看器的本机格式为 WCF 发出的活动跟踪格式。 对于以其他格式发出的跟踪,必须先进行转换,这样查看器才会显示它们。 目前,除了活动跟踪格式外,查看器还支持事件跟踪和深红色跟踪。
打开不包含活动跟踪的文件时,查看器会尝试转换该文件。 必须指定将包含转换的跟踪数据的文件的名称和位置。 转换数据后,查看器会显示新文件的内容。
注释
转换需要磁盘空间来存储转换的跟踪数据。 在开始转换之前,请确保有足够的磁盘空间来存储数据。 否则,转换会失败。
项目管理
查看器支持项目来方便查看多个跟踪文件。 例如,如果你有客户端跟踪文件和服务跟踪文件,则可以将它们添加到项目中。 然后,每次打开项目时,都会同时加载项目中的所有跟踪文件。
可通过两种方法来管理项目:
在 “文件” 菜单中,可以打开、保存和关闭项目。
在 “项目 ”选项卡中,可以向项目添加文件。
查看 WCF 跟踪
WCF 使用活动跟踪格式发出跟踪。 在活动跟踪模型中,各个跟踪按其目的在活动中进行分组。 逻辑控制流在活动之间传输。 例如,在应用程序的生存期内,将显示并消失许多“消息发送活动”。 有关查看跟踪和活动以及服务跟踪查看器的用户界面的详细信息,请参阅 使用服务跟踪查看器查看相关跟踪和故障排除。
切换到不同的视图
服务跟踪查看器提供以下不同的视图。 它们显示为查看器左窗格中的选项卡,也可以从 “视图 ”菜单访问。
活动视图
项目视图
邮件视图
图形视图
活动视图
跟踪文件打开后,就可以查看分组到活动中并显示在左侧窗格“活动”视图中的跟踪。
活动视图显示活动名称、活动中的跟踪数、持续时间时间、开始时间和结束时间。
单击列出的任何活动后,此活动中的跟踪将显示在右侧的跟踪窗格中。 然后,可以选择跟踪以查看其详细信息。
可以通过按 Ctrl 或 Shift 键并单击所需活动来选择多个活动。 跟踪窗格显示所选活动的所有跟踪。
双击某个活动可以在“图形”视图中显示该活动。 另一种方法是选择活动并切换到 图形 视图。
注释
活动“0000000000000”是一种特殊活动,无法在图形视图中显示。 由于所有其他活动都链接到它,因此显示此活动会对性能产生严重影响。
可以单击列标题对活动列表进行排序。 包含警告跟踪的活动具有黄色背景,而包含错误跟踪的活动具有红色背景。
有不同类型的活动,每种类型对应于每个活动的左侧的图标。 可以参考“了解跟踪图标”部分了解其含义。
项目视图
使用此视图可以管理当前项目中的跟踪文件。 有关详细信息,请参阅“管理项目”部分。
邮件视图
此视图使您可以查看所有消息日志跟踪,包括操作、日期/时间、进程、活动和发件人/收件人信息,并导航到关联消息日志跟踪的详细信息。 可以按活动边界、进程/线程或发送和接收对消息日志跟踪进行分组,以便更轻松地导航消息流。
图形视图
此视图以图表形式显示给定活动的跟踪数据。 通过图表窗体,可以查看事件的分步执行以及多个活动之间的相互关系,因为数据在它们之间移动。
若要切换到 图形 视图,请在 “活动 ”视图中选择一个活动,然后单击“ 活动 ”选项卡或 消息 视图中的消息日志跟踪。 如果加载了多个跟踪文件,并且活动涉及来自多个文件的跟踪,则所有相关跟踪将显示在图形视图中。 双击活动和消息日志跟踪也可以切换到“图形”视图。
在 Graph 视图中,每个垂直列表示一个活动,列中的每个块都表示跟踪。 活动按进程(或线程)分组。 活动之间的小箭头表示转移。 进程之间的大箭头表示消息交换。 选定的活动始终为黄色。
在图表中选择轨迹
单击图形中的块。
使用向上键和向下键选择其相邻的跟踪。
观察跟踪窗格和详细信息窗格中的跟踪信息。
展开或折叠活动传输
当选定的活动传输到另一个活动时,可以展开活动传输。 它使你能够跟踪传输。
若要展开或折叠活动传输,
在传输图标左侧找到带有“+”号的传输跟踪。
单击“+”,或使用键盘按 Ctrl 和“+”。
下一个活动显示在图形中。
“-”显示在传输图标的左侧。 单击“-”号或按 Ctrl 和“-”,则会折叠活动传输。
注释
当活动具有多个到它的传输时,如果展开其中一个传输,则会显示从根活动到新活动的活动。 这些新活动以折叠形式显示。 如果想要查看这些活动的详细信息,请单击图形标题中的展开图标,垂直展开它们。
垂直展开或折叠活动
查看器通过折叠活动在活动图形中隐藏不必要的详细信息。 在折叠的活动中,不会显示各个跟踪。 只会显示传输跟踪。 如果想要查看活动中的所有跟踪,可通过单击图形标题中该活动的展开符号将活动垂直展开。
若要垂直展开或折叠活动,
单击活动标头中的“+”图标以垂直展开活动。
请注意,所有的轨迹都显示在图形中。
单击活动标题中的“-”图标可垂直折叠活动。
请注意,活动中仅显示重要的传输、消息日志、警告和异常跟踪信息。
选项
可以在图形视图中的 “选项” 菜单中选择两个选项。
显示活动边界跟踪,如果未选中,则忽略图形中的活动边界跟踪。
显示非消息详细跟踪:如果未选中此选项,则忽略除消息跟踪以外的其他详细级别跟踪。 大多数情况下,详细级别的跟踪对于分析不是十分重要。 如果不想分析详细级别跟踪,并且只想专注于更重要的跟踪,此选项非常有用。
布局模式
查看器有两种布局模式: 进程 和 线程。 此设置定义组织的最大单位。 默认布局模式为 “进程”,这意味着活动按图形中的进程分组。
执行列表
可以从此下拉列表选择要显示在图形中的进程或线程。 例如,如果已打开两个客户端(A 和 B)和一个服务的跟踪文件,并且只想在图形中显示服务和客户端 A,则可以从列表中选择客户端 B。
查看跟踪详细信息
若要查看某个跟踪的详细信息,请在“跟踪”窗格中选择该跟踪。 详细信息将显示在“详细信息”窗格中。
跟踪窗格
服务跟踪查看器中的右上方窗格是“跟踪窗格”。 它列出所选活动中的所有跟踪,其中包含额外的信息,例如跟踪级别、线程 ID 和进程名称。
可以通过右键单击跟踪并选择“ 将跟踪复制到剪贴板”,将跟踪的原始 XML 复制到剪贴板。
“详细信息”窗格
服务跟踪查看器的左下窗格是“详细信息”窗格。 它提供三个选项卡来查看跟踪详细信息。
格式视图以更有序的方式显示信息。 它列出了表和树中的所有已知 XML 元素,以便更轻松地阅读和理解信息。
XML 视图显示与所选跟踪对应的 XML。 它支持突出显示和语法着色。 使用 “查找” 搜索字符串时,它会突出显示搜索结果。
消息视图在消息日志跟踪中显示 XML 的消息部分。 选择非消息跟踪时,它不可见。
筛选 WCF 跟踪
若要简化跟踪分析,可以通过以下方式对其进行筛选:
筛选器工具栏提供对预定义筛选器和自定义筛选器的访问权限。 可以通过 “视图” 菜单启用它。
查看器的预定义筛选器可用于选择性地筛选 WCF 跟踪的各个部分。 默认情况下,此筛选器设置为允许所有基础结构跟踪通过。 此筛选器的设置在“视图”菜单下的“筛选器选项”子菜单中定义。
自定义 XPath 筛选器允许用户完全控制筛选。 可以在“视图”菜单下的“自定义筛选器”中定义它们。
仅显示通过所有筛选器的跟踪。
使用筛选器工具栏
筛选器工具栏显示在工具顶部。 如果不存在,可以在 “视图” 菜单中激活它。 吧台有三个组件:
查找: 查找 定义在筛选操作中要查找的主体。 例如,如果要查找进程 X 上下文中发出的所有跟踪,请将此字段设置为 X,并将 “搜索输入 ”字段设置为“进程名称”。 选择基于时间的筛选器时,此字段将更改为 DateTime 选择器控件。
搜索范围:此字段定义要应用的筛选器类型。
级别:级别设置定义筛选器允许的最低跟踪级别。 例如,如果级别设置为“错误及严重错误”,则只会显示“错误”和“严重”级别的跟踪。 此筛选器与“查找”和“搜索范围”指定的条件结合使用。
“ 立即筛选 ”按钮启动筛选器作。 某些筛选器(尤其是应用于大型数据集时)需要很长时间才能完成。 可以在“操作”菜单下的状态栏中,按显示的“停止”按钮来取消筛选操作。
“清除”按钮会重置预定义的和自定义的筛选器,以允许所有跟踪通过。
筛选器选项
查看器可以从视图中自动删除 WCF 跟踪。 它可以有选择地删除 WCF 的特定区域发出的跟踪,例如,从视图中删除与事务相关的跟踪。
此筛选器的设置在“视图”菜单下的“筛选器选项”子菜单中定义。
自定义筛选器
如果熟悉 XML 路径语言(XPath),则可以使用它来构造自定义筛选器,以搜索任何感兴趣的 XML 元素的跟踪数据。 筛选器可通过筛选器工具栏访问。
自定义筛选器可以包含参数。 还可以导入预先存在的自定义筛选器。
创建自定义筛选器
可以通过两种方式创建筛选器:
使用模板向导创建自定义筛选器
可以单击现有跟踪,并根据跟踪的结构创建筛选器。 此示例基于线程 ID 创建自定义筛选器。
在查看器右上角区域的跟踪窗格中,选择包含你想筛选元素的跟踪。
单击位于跟踪窗格顶部的“ 创建自定义筛选器 ”按钮。
在出现的对话框中,输入筛选器的名称。 在此示例中,输入
Thread ID
。 您还可以提供您的筛选器说明。左侧的树视图显示你在步骤 1 中选择的跟踪记录的结构。 通过浏览找到要为其创建条件的元素。 在此示例中,浏览到位于 XPath: /E2ETraceEvent/System/Execution/@ThreadID 节点的 ThreadID。 双击树视图中的 ThreadID 属性。 这将为对话框右侧的属性创建表达式。
将 ThreadID 条件的参数字段从 无 更改为“{0}”。 此步骤允许在应用筛选器时配置 ThreadID 值。 (请参阅“如何应用筛选器”部分)最多可以定义四个参数。 条件是使用 OR 运算符组合的。
单击“ 确定” 以创建筛选器。
注释
使用模板向导创建筛选器后,只能手动编辑筛选器。 对于以前创建的筛选器,将无法激活向导。 此外,在模板向导中创建的 XPath 筛选器条件使用 OR 运算符进行合并。 如果需要 AND 运算,可以在创建了筛选器表达式后进行编辑。
手动创建自定义筛选器
使用“自定义筛选器”菜单可以手动输入 XPath 筛选器。
在“视图”菜单中,单击“ 自定义筛选器 ”菜单项。
在出现的对话框中,单击“ 新建”。
至少指定筛选器名称和 XPath 表达式。
单击 “确定” 。
应用自定义筛选器
创建自定义筛选器后,可以通过筛选器工具栏访问它。 选择要在筛选器工具栏的 “搜索中” 字段中应用的筛选器。 对于前面的示例,请选择“线程 ID”。
在 “查找内容 ”字段中指定要查找的值。 在我们的示例中,输入要搜索的线程的 ID。
单击“ 立即筛选”,观察作的结果。
如果筛选器使用多个参数,请在 “查找内容 ”字段中使用“;”作为分隔符输入它们。 例如,以下字符串定义了 3 个参数:“1;findValue;text'。 查看器将“1”应用于 {0} 筛选器的参数。 “findValue”和“text”分别应用于{1}和{2}。
共享自定义筛选器
可以在不同会话和不同用户之间共享自定义筛选器。 可以将筛选器导出到定义文件,并将此文件导入到另一个位置。
导入自定义筛选器:
在 “视图 ”菜单中,单击“ 自定义筛选器”。
在打开的对话框中,单击“ 导入 ”按钮。
导航到自定义筛选器文件(.stvcf),单击该文件,然后单击“ 打开 ”按钮。
导出自定义筛选器:
在“视图”菜单中,单击“ 自定义筛选器”。
在打开的对话框中,选择要导出的筛选器。
单击“ 导出 ”按钮。
指定自定义筛选器定义文件(.stvcf)的名称和位置,然后单击“ 保存 ”按钮。
注释
这些自定义筛选器只能从服务跟踪查看器导入和导出。 其他工具无法读取它们。
查找数据
查看器提供以下查找数据的方法:
“查找”工具栏提供对最常见查找选项的快速访问。
“查找”对话框提供了更多查找选项。 可通过 “编辑” 菜单或短键 Ctrl + F 访问它。
查找工具栏显示在查看器顶部。 如果不存在,可以在 “视图” 菜单中激活它。 酒吧有两个组件:
查找内容:可在其中输入搜索关键字。
查找范围:可在其中输入搜索范围。 可以选择是搜索所有活动还是仅搜索当前活动。
“查找”对话框提供了两个附加选项:
查找目标:
“原始日志数据”选项在所有原始数据中搜索关键字。
“XML 文本”和“XML 属性”选项仅在 XML 元素中搜索。
“记录的消息”选项仅在消息中搜索关键字。
忽略根活动:搜索会忽略“000000000000”活动中的痕迹。 当根活动具有数千个跟踪(其中大部分是传输)时,这会提高大型跟踪文件中的性能。
定位跟踪
由于在应用程序运行时期间,跟踪是逐步记录的,因此定位跟踪有助于调试应用程序。 服务跟踪查看器提供了多种在跟踪中导航的方法。
逐步向前或逐步向后
如果将每个跟踪都看作程序中的一行代码,则逐步向前非常类似于 Visual Studio 集成开发环境 (IDE) 中的“逐过程”。 区别在于,在跟踪中还可以逐步向后。 逐步向前意味着移动到活动中的下一个跟踪。
单步前进:使用 “活动 ”菜单,或按“F10”。 还可以在跟踪窗格中使用箭头键“向下”。
后退:使用 “活动 ”菜单,或按“F9”。 还可以在跟踪窗格中使用箭头键“向上”。
注释
这可将你带到在不同进程中甚至在不同的计算机上发生的活动,因为 WCF 消息可以携带跨计算机的活动 ID。
追踪传输
传输跟踪是跟踪文件中的特殊跟踪。 一个活动可以通过传输跟踪而传输到另一个活动。 例如,“活动 A”可以传输到“活动 B”。 在这种情况下,“活动 A”中有一个传输记录,名称为“To: Activity”和传输图标。 此传输轨迹是两个轨迹之间的链接。 在“活动 B”中,活动末尾可能还会有一个传输跟踪,用于传输回“活动 A”。 这类似于程序中的函数调用:调用 B,然后 B 返回。
“追踪传输”类似于调试器中的“单步执行”。 它遵循从 A 到 B 的传输。它不会对其他跟踪产生任何影响。
有两种方法可以跟踪传输:通过鼠标或键盘:
使用鼠标:在跟踪窗格中双击传输跟踪。
按键盘:选择传输跟踪,并在 “活动 ”菜单中使用“关注传输”,或按“F11”
注释
在许多情况下,当活动 A 传输到活动 B 时,活动 A 将等待活动 B 传输回活动 A。这意味着活动 A 在活动 B 主动跟踪期间没有记录任何跟踪。 但是,也有可能活动 A 不等待,而是持续记录跟踪。 活动 B 也可能不转移回活动 A。因此,活动传输与这种意义上的函数调用仍然不同。 可以在图形视图中更好地了解活动传输。
跳转到下一个或上一个传输
在分析当前活动或选定的活动(如果选择了多个活动)时,可能希望快速找到它传输到的活动。 通过“跳转到下一个传输”,可以定位到活动中的下一个传输跟踪。 找到传输跟踪后,可以使用“跟随传输”进入下一个活动。
跳转到“下一次传输:使用 活动 ”菜单,或按“Ctrl + F10”。
跳转到上一次传输:使用 “活动 ”菜单,或按“Ctrl + F9”。
在图形视图中导航
尽管在活动窗格和跟踪窗格中导航类似于调试,但使用 Graph 视图在导航方面提供了更好的体验。 有关详细信息,请参阅“图形视图”部分。
加载大型跟踪文件
跟踪文件可能非常大。 例如,如果在“Verbose”级别上启用跟踪,几分钟后生成的跟踪文件可能达到数百兆字节甚至更大,具体取决于网络速度和通信模式。
在服务跟踪查看器中打开非常大的跟踪文件时,系统性能可能会受到负面影响。 加载后加载速度和响应时间可能很慢。 实际速度因硬件配置而异。 在大多数电脑上,加载大于 200M 的跟踪文件会严重影响性能。 对于大于 1G 的跟踪文件,该工具可能会占用所有可用内存,或长时间停止响应。
为了避免在分析大型跟踪文件时加载和响应时间缓慢,服务跟踪查看器提供了一个名为“部分加载”的功能,该功能一次只加载少量的跟踪。 例如,你可能有一个超过 1GB 的跟踪文件,该文件在服务器上运行了几天。 发生某些错误并想要分析跟踪时,无需打开整个跟踪文件。 您可以加载可能发生错误的某个时间段内的跟踪。 由于范围较小,因此服务跟踪查看器工具可以更快地加载文件,并且可以使用较小的数据集识别错误。
启用部分加载
无需手动启用部分加载。 如果尝试加载的跟踪文件的总大小超过 40MB,服务跟踪查看器会自动显示“部分加载”对话框,以便选择要加载的部分。
注释
由于跟踪可能不会在时间跨度中均匀分布,因此在“部分加载”工具栏中指定的时间段长度可能与显示的加载大小不成比例。 实际加载大小可以小于部分加载对话框中的“估计大小”。
调整部分加载
部分加载跟踪文件后,可能需要更改正在加载的数据集。 为此,可以调整查看器顶部的部分加载工具栏。
按鼠标移动工具栏,或输入“开始”和“结束时间”。
单击“ 调整 ”按钮。
了解跟踪图标
下面是服务跟踪查看器工具在 活动 视图、 图形 视图和 跟踪 窗格中用于表示不同项的图标列表。
注释
某些未分类的跟踪(例如“已关闭邮件”)没有图标。
活动跟踪
图标 | DESCRIPTION |
---|---|
![]() |
“警告”跟踪:在警告级别发出的跟踪 |
![]() |
“错误”跟踪:在错误级别发出的跟踪。 |
![]() |
“活动开端”跟踪:标记活动开头的跟踪。 它包含活动的名称。 作为应用程序设计器或开发人员,应对每个活动 ID、每个进程或线程定义一个活动启动跟踪。 如果活动 ID 跨跟踪源传播以用于跟踪关联,那么您就可以看到同一活动 ID 的多个启动事件(每个跟踪源一个)。 如果为跟踪源启用了 ActivityTracing,则会发出启动跟踪。 |
![]() |
“活动结尾”跟踪:标记活动结尾的跟踪。 . 它包含活动的名称。 作为应用程序设计者或开发人员,您应针对每个跟踪源为每个活动 ID 定义一个活动 "停止跟踪"。 在给定跟踪源发出的活动结尾之后不会显示该跟踪源中的任何跟踪,除非跟踪时间间隔不够小。 如果发生这种情况,时间相同的两个跟踪(包括“结尾”跟踪)在显示时可能会交错。 如果活动 ID 在跟踪关联的跟踪源之间传播,将可看到同一活动 ID 有多个“结尾”(每个跟踪源一个)。 如果为跟踪源启用了 ActivityTracing,则会发出“结尾”跟踪。 |
![]() |
活动暂停记录:一种记录,用于标记活动暂停的时间。 在活动继续之前,不会在挂起的活动中发出任何跟踪。 挂起的活动表示不会在该活动的跟踪源范围内进行任何处理。 “挂起”/“继续”跟踪对于进行分析十分有用。 如果为跟踪源启用了 ActivityTracing,则会发出“挂起”跟踪。 |
![]() |
“活动继续”跟踪:标记活动在暂停后继续进行的时间的跟踪。 可以在该活动中再次发出跟踪。 “挂起”/“继续”跟踪对于进行分析十分有用。 如果为跟踪源启用了 ActivityTracing,则会发出“继续”跟踪。 |
![]() |
传输:在逻辑控制流从一个活动传输到另一个活动时发出的跟踪。 传输所源自的活动可能与传输所转到的活动并行执行工作。 如果为跟踪源启用了 ActivityTracing,则会发出“传输”跟踪。 |
![]() |
传输自:定义从另一个活动到当前活动的传输的跟踪。 |
![]() |
传输至:定义从当前活动到另一个活动的逻辑控制流传输的跟踪。 |
WCF 跟踪
图标 | DESCRIPTION |
---|---|
![]() |
消息日志跟踪:当启用System.ServiceModel.MessageLogging 跟踪源时,由消息日志记录功能记录WCF消息时发出的跟踪。 单击此跟踪记录即可显示消息。 消息有四个可配置的日志记录点:ServiceLevelSendRequest、TransportSend、TransportReceive 和 ServiceLevelReceiveRequest,也可以由 messageSource 消息日志跟踪中的属性指定。 |
![]() |
“已接收消息”跟踪:收到 WCF 消息时发出的跟踪(如果在“信息”或“详细”级别启用了 System.ServiceModel 跟踪源)。 此跟踪对于在活动 图 视图中查看消息关联箭头至关重要。 |
![]() |
“已发送消息”跟踪:发送 WCF 消息时发出的跟踪(如果在“信息”或“详细”级别启用了 System.ServiceModel 跟踪源)。 此跟踪对于在活动 图 视图中查看消息关联箭头至关重要。 |
活动
图标 | DESCRIPTION |
---|---|
![]() |
活动:指示当前活动是泛型活动。 |
![]() |
根活动:指示进程的根活动。 |
WCF 活动
图标 | DESCRIPTION |
---|---|
![]() |
环境活动:创建、打开或关闭 WCF 主机或客户端的活动。 在这些阶段发生的错误将会出现在此活动中。 |
![]() |
“侦听”活动:可对与侦听器相关的跟踪进行记录的活动。 在此活动中,可以查看侦听器信息和连接请求。 |
![]() |
“接收字节”活动:一种活动,可对与在两个终结点之间的连接上接收传入字节相关的所有跟踪进行分组。 在与传播其活动 ID 的传输活动(比如 http.sys)建立关联时,此活动是必需的。 诸如中止等连接错误将出现在此活动中。 |
![]() |
“处理消息”活动:一种活动,可对与创建 WCF 消息相关的跟踪进行分组。 由于信封错误或邮件格式不正确,错误会出现在该活动中。 在此活动中,我们可以检查消息标头,以查看活动 ID 是否已从调用方传播。 如果已传播,则在传输到“处理操作”活动(下一个图标)时,我们还可以为该活动分配传播的活动 ID,以便在调用方和被调用方的跟踪之间建立关联。 |
![]() |
“处理操作”活动:一种活动,可对与两个终结点之间的 WCF 请求相关的所有跟踪进行分组。 如果在配置中将两个终结点的 propagateActivity 设置为 true ,则这两个终结点中的所有跟踪将合并为一个活动,以便直接关联。 此类活动将包含由于传输或安全处理、延伸到用户代码边界及回退(如果存在响应)而发生的错误。 |
![]() |
执行用户代码活动:将用户代码跟踪分组以处理请求的活动。 |
故障排除
如果没有写入注册表的权限,使用“”svctraceviewer /register
命令注册该工具时,会收到以下错误消息“Microsoft服务跟踪查看器未注册到系统”。 如果发生这种情况,则应使用具有注册表写入访问权限的帐户登录。
此外,服务跟踪查看器工具将某些设置(例如自定义筛选器和筛选器选项)写入其程序集文件夹中的 SvcTraceViewer.exe.settings 文件。 如果您没有文件的读取权限,仍可以启动工具,但无法加载设置。
如果在打开 .etl 文件时收到错误消息“处理一个或多个跟踪时出现未知错误”,则表示 .etl 文件的格式无效。
如果打开使用阿拉伯语作系统创建的跟踪日志,你可能会注意到时间筛选器不起作用。 例如,2005 年对应于阿拉伯语日历中的 1427 年。 但是,服务跟踪查看器工具筛选器支持的时间范围不支持早于 1752 的日期。 这表示无法在筛选器中选择正确的日期。 若要解决此问题,可以使用 XPath 表达式创建自定义筛选器(视图/自定义筛选器),以包含特定的时间范围。