可以使用以下任何方法之一来控制 Winsock 跟踪:
命令行工具
Windows Vista 和 Windows Server 2008 附带两个命令行工具,用于控制跟踪并将二进制跟踪日志文件转换为可读文本。
logman.exe 工具用于启动或停止 Winsock 跟踪。
tracerpt.exe 工具用于将二进制跟踪日志文件转换为可读文本文件。
事件查看器
Windows Vista 及更高版本上的事件查看器还可用于启用 Winsock 跟踪。 可以从“开始”菜单访问“管理工具”下的“事件查看器”。
使用 logman 和 tracerpt
默认情况下,Winsock 网络事件跟踪在 Windows Vista 及更高版本上处于禁用状态。
以下命令在计算机上启动 Winsock 网络事件跟踪,将事件跟踪会话的名称设置为 mywinsocksession,并将输出发送到名为 winsocklogfile.etl 的二进制日志文件:
logman start -ets mywinsocksession -o winsocklogfile.etl -p Microsoft-Windows-Winsock-AFD
日志文件在当前目录中创建,其文件名为 winsocklogfile_000001.etl
下面的命令将停止在计算机上对名为 mywinsocksession 的会话进行上述 Winsock 跟踪:
logman stop -ets mywinsocksession
二进制日志文件将写入 –o 参数指定的位置。 若要将二进制文件转换为可读文本文件,请使用 tracerpt.exe:
tracerpt.exe <.etl 文件名称> –o winsocktracelog.txt
如果首选包含 xml 而不是纯文本的输出文件,则使用以下命令:
tracerpt.exe <.etl 文件的名称> –o winsocktracelog.xml –of xml
默认情况下,Winsock 目录更改跟踪在 Windows Vista 及更高版本上启用。
注意
分层服务提供程序已弃用。 从 Windows 8 和 Windows Server 2012 开始,请使用 Windows 筛选平台。
以下命令在计算机上启动分层服务提供商的 Winsock 目录更改跟踪,将事件跟踪会话的名称设置为 mywinsockcatalogsession,并将输出发送到名为 winsockcataloglogfile.etl 的二进制日志文件:
logman start -ets mywinsockcatalogsession -o winsockcataloglogfile.etl -p Microsoft-Windows-Winsock-WS2HELP
日志文件在当前目录中创建,其文件名为 winsockcataloglogfile_000001.etl
下面的命令将停止在计算机上对名为 mysession 的会话进行上述 Winsock 跟踪:
logman stop -ets mywinsockcatalogsession
二进制日志文件将写入 –o 参数指定的位置。 若要将二进制文件转换为可读文本文件,请使用 tracerpt.exe:
tracerpt.exe <.etl 文件名称> –o winsockcatalogtracelog.txt
如果首选包含 xml 而不是纯文本的输出文件,则使用以下命令:
tracerpt.exe <.etl 文件的名称> –o winsockcatalogtracelog.xml –of xml
使用事件查看器启动 Winsock 网络事件跟踪
打开事件查看器时,左窗格包含事件列表。 打开 应用程序和服务日志,并导航到 Microsoft\Windows\Winsock 网络事件 作为源,然后选择 操作。
在“操作”窗格中,选中 日志属性 并选中“启用日志记录 ”复选框。 启用日志记录后,如果需要,还可以更改日志文件的大小。
Winsock 网络事件跟踪现已启用,只需点击“刷新”操作即可更新已记录的事件列表。 要停止记录,只需取消选中相同的单选按钮即可。
可能需要根据要查看的事件数来增加日志大小。 使用事件查看器进行 Winsock 跟踪的一个缺点是,它不会加载所有字符串资源,因此在“说明”字段中显示的消息(当您选择一个事件时)有时很难阅读。例如,一个应格式化为十六进制的参数可能会被显示为十进制。 但是,可以在事件说明中选择 详细信息 选项卡,其中显示了通常更易于理解参数的原始 XML 日志条目。
使用事件查看器启动 Winsock 目录更改跟踪
打开事件查看器时,左窗格包含事件列表。 打开“应用程序和服务日志”,导航到 Microsoft\Windows\Winsock Catalog Change 作为源,然后选择“操作”。
在“操作”窗格中,选中 日志属性 并选中“启用日志记录 ”复选框。 启用日志记录后,如果需要,还可以更改日志文件的大小。
Winsock 目录更改跟踪现已启用,只需点击“刷新”操作即可更新已记录的事件列表。 要停止记录,只需取消选中相同的单选按钮即可。
可能需要根据要查看的事件数来增加日志大小。 使用用于 Winsock 跟踪的事件查看器的一个缺点是,它不会加载所有的字符串资源,因此在“说明”字段中显示的消息(当您选择一个事件后)有时很难阅读。例如,一个参数本应格式化为十六进制,但却用十进制显示。 但是,可以在事件说明中选择 详细信息 选项卡,其中显示了通常更易于理解参数的原始 XML 日志条目。
解析 Winsock 跟踪日志
日志中的所有 Winsock 跟踪事件都包含两种类型的信息:
- 系统
- 事件数据
系统信息包含日志记录级别、创建日志条目的时间、表示事件类型的事件 ID、执行进程 ID、执行线程 ID 和其他系统信息。 在 Winsock 跟踪中,第 4 级日志表示信息事件日志。 在 Winsock 跟踪中,第 5 级日志表示详细事件日志。
系统信息中的执行进程 ID 和线程 ID 指示事件发生时正在运行的进程和线程。 在许多情况下,这表示内核或工作线程和进程,而不是用户模式线程或应用程序进程。 因此,此字段通常不太有用。
每个 Winsock 跟踪事件类型在所记录数据的系统部分中都有唯一的事件 ID。 这些事件 ID 可用于筛选特定 Winsock 跟踪事件的日志文件。
eventdata 包含特定于事件类型的信息。
eventdata 信息中的 Process 参数是进程的内核 EPROCESS 结构地址,而不是实际的 PID。 若要将事件与用户模式 PID 匹配,请从任何日志条目中的 eventdata 信息获取 Process 值,并在日志中查找具有 Process 值的套接字创建事件。 找到匹配项后,套接字创建事件数据中的最后一个参数是创建套接字的用户模式进程 ID。
事件数据信息中的 Address 参数在某些 Winsock 跟踪事件中返回。 Address 参数表示 IP 地址,但它显示在由 tracerpt.exe 工具创建的文本文件中,或事件查看器中显示为原始字节或数字。 IPv6 地址以十六进制形式显示,因此更易于理解。 IPv4 地址显示为大十进制数。 开发人员需要手动将 IPv4 地址的原始字节转换为更熟悉的 IPv4 点十进制地址表示法,以便更好地解释值。
某些 Winsock 跟踪事件会返回 eventdata 中的 Error 参数。 Error 参数采用 NTSTATUS 或 HRESULT 错误代码的形式。 此错误参数显示在由 tracerpt.exe 工具创建的文本文件中,或在事件查看器中显示为十进制数。 开发人员需要手动将十进制数转换为十六进制数,以便在某些情况下更好地解释错误代码。