将跟踪工具与 VSS 配合使用

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

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

注意

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

 

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

使用 VssTrace

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

vsstracecommand-line-options

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

vsstrace -help

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

vsstrace -help all

VssTrace Command-Line 选项

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

-fFlags

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

注意

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

 

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

模块 标志 默认已启用 跟踪的项目
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服务器操作系统上可用。
TEST 0x00000200 不适用。 保留此跟踪模块 (。)
IOCTL 0x00000400 VSS 服务通过调用 DeviceIoControl 函数启动的 FSCTL 和 IOCTL 操作的详细信息。
0x00000800 常规 VSS 实用工具函数,例如分配器、字符串类和注册表和卷操作。
WRXML 0x00001000 编写器元数据的 XML 处理。 此模块具有非常高的噪音级别。
VSSXML 0x00002000 XML 处理基类。 此模块具有非常高的噪音级别。

 

**+**模块

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

-模块

禁用 模块指定的模块。 若要列出可用的模块,请在命令行提示符下键入 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

-lLevel

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

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

 

+缩进

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

-indent

请勿缩进格式化的跟踪输出。

-etlEtlFile

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

-oOutputFile

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

-helpHelpOption

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

使用 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