将跟踪工具与 VSS 配合使用 - Win32 apps

将跟踪工具与 VSS 配合使用 - Win32 apps

若要收集 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 命令行选项

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

风雨相关