将跟踪工具与 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 应用程序配合使用
使用以下命令开始跟踪:
logman start vss -o *x:\*vss.etl -ets -p {9138500e-3648-4edb-aa4c-859e9f7b7c38} 0xfff 170
注意
将“x:\”替换为要存储跟踪日志文件的目录路径。
使用以下命令停止跟踪:
logman stop vss -ets
跟踪日志文件为 *x:\*vss.etl。
有关 Logman 工具的详细信息,请参阅 Logman。
使用 Tracelog
以下过程介绍如何使用 Tracelog。
使用 Tracelog
创建一个名为 vss.ctl 的文本文件,该文件仅包含以下文本:
9138500e-3648-4edb-aa4c-859e9f7b7c38 vss
使用以下命令开始跟踪:
tracelog -start vss -f *x:\*vss.etl -guid vss.ctl -flag 0xff -level 0xaa
注意
将“x:\”替换为要存储跟踪日志文件的目录路径。
使用以下命令停止跟踪:
tracelog -stop vss
跟踪日志文件为 *x:\*vss.etl。
有关 Tracelog 工具的详细信息,请参阅 Tracelog。