将跟踪工具与 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。

风雨相关