跟踪 Sync Framework 组件

Sync Framework 允许您跟踪几个组件的执行情况,这在应用程序调试期间很有用。对于大多数 Sync Framework 组件,通过使用 Windows 事件跟踪 (ETW) 基础结构在本机代码级别执行跟踪。有关该 ETW 基础结构的更多信息,请参见事件跟踪

即使您针对 API 的托管版本进行开发,仍要使用 ETW,因为托管 API 是本机 API 上的瘦包装。Sync Framework 数据库提供程序提供基于 .NET Framework 实现的托管跟踪功能。有关更多信息,请参见如何跟踪同步过程

下载和使用跟踪工具

ETW 需要的跟踪工具包括在 Windows 支持工具中,这些工具在每个 Windows 版本中都提供。例如,用于 Windows XP SP2 的这些工具可以在 Microsoft 下载中心页找到。下表描述了与 Sync Framework 跟踪有关的工具:

跟踪工具 说明 语法参考

Tracelog.exe

启动、停止或启用跟踪日志记录。

Tracelog 命令语法

Tracefmt.exe

格式化并显示来自事件跟踪日志文件 (.etl) 或实时跟踪会话的跟踪消息。

Tracefmt

为了查看跟踪的输出,可以启动一个跟踪日志,启用跟踪,然后将跟踪信息格式化以便查看。

启动跟踪记录器

若要启动跟踪记录器,请指定一个记录器名称、一个跟踪文件名和控制如何写入文件的几个参数:tracelog.exe -start <LoggerName> <LoggerParameters> -f <PathToEtlFile>。例如,可以使用以下命令:

tracelog.exe -start "Sync" -paged -b 32 -max 100 -cir 20 -ls -f %TEMP%\SyncFramework.etl

启用跟踪

若要启用跟踪,请指定要跟踪的组件的 GUID、指示要跟踪哪个子组件的标志的位掩码以及表示跟踪级别的一个整数:tracelog.exe - enable <LoggerName> -guid <ComponentTracingId> -flags <Flags> -level <Level>。在本示例中,我们启用 Sync Framework 核心组件及其所有子组件的跟踪,跟踪级别为 4(包括非错误情形的信息性消息):

tracelog.exe -enable "Sync" -guid #5978339c-8ab2-467e-bb85-8832659d5ed0 -flags 0xffff -level 4

有关 Sync Framework 选项的完整列表,请参见本主题中的 Sync Framework 跟踪参考。

格式化和查看跟踪文件

若要查看跟踪,请刷新记录器,并使用从 Microsoft 下载中心下载的可用于 Sync Framework 的 .tmf 文件格式化二进制跟踪文件。使用与以下命令相似的命令来查看“Sync”记录器的跟踪信息:

  1. 若要刷新记录器,请执行 tracelog.exe -flush "Sync"

  2. 将 .tmf 文件从 Sync Framework 安装路径 (Program Files\Microsoft SDKs\Microsoft Sync Framework\v2.0) 复制到工作目录(如 %TEMP%\TMF)。

  3. 若要格式化该文件,请执行 tracefmt.exe %TEMP%\SyncFramework.etl -p %TEMP%\TMF -o %TEMP%\SyncFrameworkTrace.txt

  4. 若要查看该文件,请打开 %TEMP%\SyncFrameworkTrace.txt

停止跟踪

若要停止我们早先启动的“Sync”记录器,请执行 tracelog.exe -stop "Sync"

Sync Framework 跟踪参考

下表显示表示每个 Sync Framework 组件的 GUID:

组件 组件跟踪 ID

核心框架和运行时

5978339c-8ab2-467e-bb85-8832659d5ed0

简单提供程序

69c896b3-e183-428d-9e30-4b519b156828

Web 同步组件

0958c02f-01cb-4b28-badf-1431c83a931e

元数据存储服务

67161b7f-60ff-4368-832e-670f2327a7e4

文件同步提供程序

b5fac8e8-25e0-4468-926e-54cd8514f8a0

跟踪标志

下表显示可以传递给 tracelog.exe 的 -flags 参数的位掩码标志,以指定应跟踪的子组件:

核心框架和运行时标志

跟踪标志名称 位掩码 说明

TRACE_MSG_KNOWLEDGE

0x0001

同步知识操作

TRACE_MSG_SYNC_SERVICES

0x0002

同步服务,例如应用程序同步服务和提供程序同步服务

TRACE_MSG_SYNC_SESSION

0x0004

同步会话和同步会话状态

TRACE_MSG_CHANGE_APPLIER

0x0008

通知的变更应用方

TRACE_MSG_CHANGE_BATCH

0x0010

变更批

TRACE_MSG_CHANGE

0x0020

单个变更

TRACE_MSG_FILTER

0x0040

变更筛选

TRACE_MSG_IN_MEMORY_CONFLICT_LOG

0x0080

内存中的冲突日志

TRACE_MSG_CHANGE_APPLICATION_SERVICES

0x0100

高级变更应用服务

简单提供程序标志

跟踪标志名称 位掩码 说明

TRACE_MSG_SIMPLESYNCWRAPPER

0x0001

简单提供程序(未定义子组件)

Web 同步组件标志

跟踪标志名称 位掩码 说明

TRACE_MSG_FEEDSYNC

0x0001

Web 同步组件(未定义子组件)

元数据存储服务标志

跟踪标志名称 位掩码 说明

TRACE_MSG_METADATA_STORE

0x0001

元数据存储服务(未定义子组件)

文件同步提供程序标志

跟踪标志名称 位掩码 说明

TRACE_MSG_FSP

0x0001

文件同步提供程序(未定义子组件)

跟踪级别

下表显示 Sync Framework 使用的跟踪级别。级别越高表示记录信息越详细,级别是累计的。例如,级别为 4 的跟踪包含级别 1-3 的所有信息以及其他信息:

跟踪级别 说明

TRACE_LEVEL_NONE

0

不跟踪

TRACE_LEVEL_CRITICAL

1

异常退出或终止

TRACE_LEVEL_ERROR

2

严重错误

TRACE_LEVEL_WARNING

3

可能揭示问题的警告

TRACE_LEVEL_INFORMATION

4

包括非错误情形的信息

TRACE_LEVEL_METADATA_INFORMATION

5

有关同步元数据的信息

TRACE_LEVEL_FUNCTION

6

有关进入和退出每个函数时的信息

请参阅

概念

Sync Framework 故障排除