将跟踪工具与 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 命令行选项

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

-f 标志

启用由标志位掩码指定标志的模块。 每个标志对应一个 VSS 模块。 如果标志为零,则不会启用任何模块。 请注意,大多数模块默认处于启用状态。 此选项不能与 **+**Module 选项结合使用。 例如,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) 的卷影副本。 仅在 Windows 服务器操作系统上提供 UI。
TEST 0x00000200 不适用。 (此跟踪模块是保留模块。)
IOCTL 0x00000400 VSS 服务通过调用 DeviceIoControl 函数启动的 FSCTL 和 IOCTL 操作的详细信息。
GEN 0x00000800 常规 VSS 实用工具函数,例如分配器、字符串类以及注册表和卷操作。
WRXML 0x00001000 编写器元数据的 XML 处理。 该模块的噪音水平非常高。
VSSXML 0x00002000 XML 处理基类。 该模块的噪音水平非常高。

 

**+**模块

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

-模块

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

+pid ProcessId

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

-pid ProcessId

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

+tid ThreadId

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

-tid ThreadId

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

-l Level

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

Level 跟踪输出中包含的信息
0.00
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 All

 

+indent

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

-indent

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

-etl EtlFile

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

-o OutputFile

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

-help HelpOption

显示由 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