news 2026/9/10 5:43:58

WSL 如何收集 WSL 侧 ETL 跟踪日志并用 WPA 分析 Windows 进程行为?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WSL 如何收集 WSL 侧 ETL 跟踪日志并用 WPA 分析 Windows 进程行为?

WSL 如何收集 WSL 侧 ETL 跟踪日志并用 WPA 分析 Windows 进程行为?

【免费下载链接】WSLWindows Subsystem for Linux项目地址: https://gitcode.com/GitHub_Trending/ws/WSL

排查 WSL 问题时,debugging.md 给出的第一个日志来源是 ETL trace:它由 WSL 的 Windows 侧进程(wslservice.exe、wsl.exe 等)发出,文档明确说这是 WSL 日志的主要来源。本文按仓库文档走一遍完整路径:用随仓库提供的 diagnostics/wsl.wprp 配置文件和 Windows Performance Recorder(wpr)采集 ETL 跟踪,再把生成的.ETL文件放进 Windows Performance Analyzer(WPA)里定位 Windows 进程行为。前提是你在一台安装了 WSL 的 Windows 机器上,并且已安装 WPR(CONTRIBUTING.md 中给出了 WPR 的安装入口说明),同时能从本仓库拿到wsl.wprp文件。

先明确 ETL 日志的覆盖范围

ETL trace 只来自 Windows 侧进程,Linux 侧的运行日志不在这份跟踪里。文档同时给出了 Linux 侧的对应手段,方便你判断当前问题该看哪一路日志:

  • 查看dmesg
  • 或启用 debug console:在%USERPROFILE%/.wslconfig中写入下面的配置,然后重启 WSL。
[wsl2] debugConsole=true

所以本文的 ETL + WPA 路径适用于要分析 Windows 侧组件行为(wslservice.exe、wsl.exe、wslrelay.exe、plan9 服务端等)的场景。

从 wsl.wprp 中选择跟踪配置

仓库中的diagnostics/wsl.wprp是一个 Windows Performance Recorder 配置文件,里面整合了多个针对 WSL 场景的 profile:

Profile用途(文档原文)
WSLGeneral WSL tracing(默认)
WSL-StorageEnhanced storage tracing(增强存储跟踪)
WSL-NetworkingComprehensive networking tracing(全面网络跟踪)
WSL-HvSocketHvSocket-specific tracing(HvSocket 专项跟踪)

从配置文件内容看,这些 profile 都是DetailLevel="Verbose"LoggingMode="File",因此采集命令需要带-filemode。默认使用WSLprofile;要使用其他 profile,在文件名后追加!ProfileName即可,文档给出的示例是wpr -start wsl.wprp!WSL-Networking -filemode。排查存储、网络或 hvsocket 相关问题时选对应 profile,能让跟踪包含相应子系统的事件提供程序;一般问题用默认 profile 即可。

用 wpr 采集 ETL 跟踪

先把diagnostics/wsl.wprp复制到本地工作目录(例如从仓库检出后复制该文件),然后在该目录下按文档给出的命令操作:

wpr -start wsl.wprp -filemode [reproduce the issue] wpr -stop logs.ETL

中间一行是文档原样的占位说明,意思是:启动跟踪后,在这里复现你要排查的问题,再执行停止命令。ETL 记录的就是这段时间窗口内 Windows 进程发出的事件。

如果只需要某个子系统的跟踪,把第一条命令换成带 profile 的写法,例如:

wpr -start wsl.wprp!WSL-Networking -filemode

执行wpr -stop logs.ETL后,当前目录会生成logs.ETL,这就是下一步 WPA 分析要打开的文件。

在 WPA 中打开 logs.ETL,按 ETL provider 定位行为

文档说明:日志文件保存后,即可用 WPA 查看(文档提供了 WPA 的 Microsoft Store 入口)。打开logs.ETL后,文档列出了几个值得关注的 ETL provider 及其重要事件,可以直接作为 WPA 中过滤和检索的依据:

ETL provider来源与范围重要事件(文档原文含义)
Microsoft.Windows.Lxss.Manager由 wslservice.exe 发出的日志GuestLog:来自虚拟机 dmesg 的日志;Error:意外错误;CreateVmBegin/CreateVmEnd:虚拟机生命周期;CreateNetworkBegin/CreateNetworkEnd:网络配置;SentMessage/ReceivedMessage:与 Linux 之间 hvsocket 通道上的通信
Microsoft.Windows.Subsystem.Lxss其他 WSL 可执行文件(wsl.exe、wslg.exe、wslconfig.exe、wslrelay.exe 等)UserVisibleError:向用户展示了一个错误
Microsoft.Windows.Plan9.ServerWindows plan9 服务器用于访问/mnt/共享(以及运行 Windows 程序)时的日志

据此可以判断问题落点:虚拟机创建异常看CreateVmBegin/CreateNetworkEnd这类成对事件;想知道 Linux 内核侧输出,看GuestLog;怀疑 hvsocket 通道异常,看SentMessage/ReceivedMessage序列;访问/mnt/下文件异常则查Microsoft.Windows.Plan9.Server。如果怀疑网络问题而默认 profile 里的信息不够,可以按上一节的方式改用WSL-Networkingprofile 重新采集一轮。

可选路径:用 collect-wsl-logs.ps1 一键采集日志包

如果目标是给问题报告准备完整日志,而不是只拿一份 ETL,仓库提供了 diagnostics/collect-wsl-logs.ps1。脚本内部同样是wpr.exe -start ... -filemode配合wsl.wprp采集 ETL(产物为logs.etl),脚本要求管理员权限(脚本头部声明#Requires -RunAsAdministrator,CONTRIBUTING.md 也要求用管理员 PowerShell 运行)。

collect-wsl-logs.ps1从仓库复制到本地目录运行即可;脚本会优先使用同目录下的本地wsl.wprpnetworking.sh,避免联网下载。基本用法:

# 管理员 PowerShell 中执行 .\collect-wsl-logs.ps1

也可以指定 profile,例如.\collect-wsl-logs.ps1 -LogProfile storage(可选值:storagenetworkinghvsocket或自定义.wprp路径)。

需要清楚脚本的副作用,它做的远不止采集一份 ETL:

  • 导出多个注册表项(HKCU/HKLM 的 Lxss 键、P9NP、WinSock2 等)到文件,收集服务状态、.wslconfig副本、安装日志等;
  • 运行期间暂停等待你按键,然后停止跟踪;
  • 默认 profile 之外,networkingprofile 会额外启动 pktmon、netsh wfp capture和 WSL 内的 tcpdump;-RestartWslReproMode会删除 WSL 的 HNS 网络并停止 WSL 服务,副作用最大,只在明确要采集网络创建日志时使用;
  • -Dump会为当前正在运行的 WSL 进程(wsl、wslservice、wslhost、wslcsession、wslrelay、wslg 等)写出崩溃转储,注意这些内容可能随日志包公开;
  • 最后把整个目录压缩为.tar.gz(失败时退回 zip)并删除中间目录,脚本打印Logs saved in: <路径>表示日志包生成完成。

只想要一份可分析的 ETL 文件时,上面手动的wpr三步就够了;这个脚本适合需要完整诊断包的场景。

完成判断与边界

采集与分析的收尾判断来自文档本身:wpr -stop后生成的logs.ETL能被 WPA 打开,并且在上表的 provider(如Microsoft.Windows.Lxss.Manager)下能看到对应事件,说明跟踪链路是通的;事件内容则用于回答具体行为问题。再次注意边界:这份 ETL 只覆盖 Windows 侧进程,问题若发生在 Linux 用户态或内核态,应转向dmesg或前文提到的 debug console 路径,而不是继续在 ETL 里找。

【免费下载链接】WSLWindows Subsystem for Linux项目地址: https://gitcode.com/GitHub_Trending/ws/WSL

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/10 5:40:52

SpringBoot3+SpringSecurity6前后端分离JWT权限认证实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 5:39:16

从零搭建智能学习平台:SpringBoot+Vue全栈开发实战与踩坑总结

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/10 5:37:28

智能体系统架构:隔离、集成与治理的范式重构

1. 为什么“智能体系统”不能照搬微服务那一套&#xff1f;“智能体系统架构&#xff1a;隔离、集成与治理的综合调研”——这个标题乍看像一篇学术综述&#xff0c;但如果你真在一线做过大模型应用落地&#xff0c;就会发现它戳中了当前最棘手的工程现实&#xff1a;我们正用微…

作者头像 李华
网站建设 2026/9/10 5:36:06

AI Agent九维度评估与Prompt发布门禁实战体系

1. 项目概述&#xff1a;为什么“好用”比“能用”更难定义&#xff1f; AI Agent不是写完代码跑起来就完事的玩具&#xff0c;它是个活的系统——会听错、会想歪、会绕远路、会在关键时刻卡壳。我带过三支团队落地Agent项目&#xff0c;从客服对话引擎到内部知识助手&#xff…

作者头像 李华