将跟踪工具与 VSS 配合使用

若要收集 VSS 基础结构的跟踪信息,可以使用 VssTrace 工具、Logman 工具或 Tracelog 工具。 VssTrace 在 Microsoft Windows 软件开发工具包 (SDK) 中提供,可用于跟踪 Windows 7 及更高版本的 Windows 操作系统上的 VSS 应用程序。 Logman 是跟踪事件和性能计数器的跟踪控制器;它还可用于跟踪 Windows 7 及更高版本的 Windows 操作系统上的 VSS 应用程序。 Tracelog 包含在 Windows 驱动程序工具包 (WDK) 中。

若要将跟踪工具与 自动化系统恢复 (ASR) 配合使用,请参阅 将跟踪工具与 ASR 应用程序配合使用

注意

VssTrace、Logman 和 Tracelog 都需要管理员权限。

 

有关每个工具的信息,请参阅以下部分:

使用 VssTrace

若要从命令行运行 VssTrace 工具,请使用以下语法:

vsstrace命令行选项

若要显示 VssTrace 工具的简洁命令行帮助,请使用以下语法:

vsstrace -help

若要显示 VssTrace 工具的详细命令行帮助,请使用以下语法:

vsstrace -help all

VssTrace Command-Line选项

VssTrace 工具使用以下命令行选项:

-f标志

启用标志由 标志 位掩码指定的模块。 每个标志对应于一个 VSS 模块。 如果 Flags 为零,则不启用任何模块。 请注意,大多数模块默认处于启用状态。 此选项可以与**+**模块 选项组合使用。 例如, vsstrace -f 0 +WRITER +COORD 禁用默认启用的所有模块的跟踪,并启用 VSS 编写器和 VSS 服务的跟踪。 或者, vsstrace +f 0xffff -COORD 可跟踪除 VSS 服务之外的所有模块。

注意

如果将 -f 选项与 **+**Module 选项一起使用, 则 -f 必须显示在 **+**Module 选项之前。

 

下表列出了每个可用模块的模块名称和标志。

模块 标志 默认情况下启用 跟踪的项
EXCEPT 0x00000001 C++ 异常处理。
COORD 0x00000002 VSS 服务,也称为 VSS 协调器。
SWPRV 0x00000004 VSS 系统卷影复制提供程序服务。
BUCOMP 0x00000008 VSS 请求者和备份元数据处理。
WRITER 0x00000010 VSS 编写器操作和 VSS 托管的编写器实现,例如 Windows 注册表编写器。
VSSAPI 0x00000020 VSSAPI.DLL导出的 VSS API 的其他函数。
HWDIAG 0x00000040 VSS 硬件提供程序基础结构和操作。
ADMIN 0x00000080 VSS 命令行实用工具,例如VSSADMIN.EXE和DISKSHADOW.EXE。
VSSUI 0x00000100 共享文件夹的卷影副本配置用户界面 (UI) 。 UI 仅在 Windows Server 操作系统上可用。
TEST 0x00000200 不适用。 (此跟踪模块是保留的。)
IOCTL 0x00000400 VSS 服务通过调用 DeviceIoControl 函数启动的 FSCTL 和 IOCTL 操作的详细信息。
0x00000800 常规 VSS 实用工具函数,例如分配器、字符串类以及注册表和卷操作。
WRXML 0x00001000 编写器元数据的 XML 处理。 此模块的噪音级别非常高。
VSSXML 0x00002000 XML 处理基类。 此模块的噪音级别非常高。

 

**+**模块

启用 Module 指定的 模块。 一次可以启用多个模块。 若要列出可用的模块,请在命令行提示符下键入 vsstrace –help 模块

-模块

禁用 Module 指定的 模块。 若要列出可用的模块,请在命令行提示符下键入 vsstrace –help 模块

+pidProcessId

启用 由 ProcessId 指定的进程。 若要启用所有进程,请使用“*”作为 ProcessId 的值。 一次可以指定多个 pid 选项。 选项的顺序决定了启用或禁用了哪些进程。 例如,若要仅启用进程标识符为0xe8c的进程,请使用 vsstrace -pid * +pid 0xe8c

-pidProcessId

禁用 ProcessId 指定的进程。 若要禁用所有进程,请使用“*”作为 ProcessId 的值。 一次可以指定多个 pid 选项。 选项的顺序决定了启用或禁用了哪些进程。 例如,若要禁用除进程标识符为0xe8c的进程之外的所有进程,请使用 vsstrace -pid * +pid 0xe8c

+tidThreadId

启用 ThreadId 指定的线程。 若要启用所有线程,请使用“*”作为 ThreadId 的值。 一次可以指定多个 tid 选项。 选项的顺序决定了启用或禁用了哪些线程。 例如,若要仅启用进程标识符为0x31a的线程,请使用 vsstrace -tid * +tid 0x31a

-tidThreadId

禁用 ThreadId 指定的线程。 若要禁用所有线程,请使用“*”作为 ThreadId 的值。 一次可以指定多个 tid 选项。 选项的顺序决定了启用或禁用了哪些线程。 例如,若要禁用除进程标识符为0x31a线程之外的所有线程,请使用 vsstrace -tid * +tid 0x31a

-l级别

使用由 Level 指定的跟踪 级别。 级别越高,跟踪输出越详细。 每个级别包括所有较低级别。 默认级别为 170。 以下级别可用。

级别 跟踪输出中包含的信息
000
020 灾难性错误
030 未经处理的异常
040 错误
050 断言
060 警告
080 异常处理
100 事件日志活动
120 常规信息
140 代码流
160 函数进入和退出
170 函数返回值
180 函数参数 ()
190 函数参数 (详细)
200 详细信息级别 1
210 详细信息级别 2
220 详细信息级别 3
230 快速代码级别 1
240 快速代码级别 2
250 快速代码级别 3
255 全部

 

+缩进

在每个函数和子函数边界处缩进格式化的跟踪输出。

-缩 进

不要缩进格式化的跟踪输出。

-etlEtlFile

EtlFile 指定的 Logman 输出文件转换为可读文本格式。

-oOutputFile

将跟踪信息保存到 OutputFile 指定的输出文件中。 为了获得最佳性能,输出文件应位于不属于卷影副本的卷上。

-helpHelpOption

显示 由 HelpOption 指定的命令行帮助。 有效的 HelpOption 值为 moduleslevelsall。 指定 模块 会导致列出模块。 指定 级别 会导致列出可用级别。 指定 所有 将导致显示详细的帮助。 如果未使用任何选项,则会显示简洁的帮助。

使用 Logman

以下过程介绍如何将 Logman 与 VSS 应用程序一起使用。

将 Logman 与 VSS 应用程序配合使用

  1. 使用以下命令开始跟踪:

    logman start vss -o *x:\*vss.etl -ets -p {9138500e-3648-4edb-aa4c-859e9f7b7c38} 0xfff 170

    注意

    替换“x:\”为要存储跟踪日志文件的目录的路径。

     

  2. 使用以下命令停止跟踪:

    logman stop vss -ets

跟踪日志文件为 *x:\*vss.etl。

有关 Logman 工具的详细信息,请参阅 Logman

使用 Tracelog

以下过程介绍如何使用 Tracelog。

使用 Tracelog

  1. 创建一个名为 vss.ctl 的文本文件,该文件仅包含以下文本:

    9138500e-3648-4edb-aa4c-859e9f7b7c38 vss

  2. 使用以下命令启动跟踪:

    tracelog -start vss -f *x:\*vss.etl -guid vss.ctl -flag 0xff -level 0xaa

    注意

    替换“x:\”为要存储跟踪日志文件的目录的路径。

     

  3. 使用以下命令停止跟踪:

    tracelog -stop vss

跟踪日志文件为 *x:\*vss.etl。

有关 Tracelog 工具的详细信息,请参阅 Tracelog