如何从Windows端Rider调试WSL2中运行的.NET Core进程
解决Windows端Rider无法附加WSL2中.NET Core进程的方案
前置检查
- 确认WSL2环境已安装匹配版本的
dotnet运行时/SDK,目标进程正常存活,可在WSL终端执行ps aux | grep dotnet确认进程PID存在 - 确认Windows端Rider版本为2021.2及以上,低版本对WSL2远程调试的支持存在已知缺陷
- 确认WSL2网络与Windows本地互通,可在WSL终端执行
ping $(hostname).local验证连通性 - 注意:如果目标.NET Core进程是通过sudo/root权限启动的,Rider默认用WSL普通用户连接会无法识别到进程,需要在WSL环境配置中勾选「以root身份连接」选项
标准附加调试操作步骤
- 打开Rider,点击顶部菜单栏「运行」→「附加到进程」
- 在弹出的进程选择窗口左上角,点击运行环境下拉框,选择对应的WSL2发行版(例如Ubuntu-22.04)
- 等待Rider完成WSL2侧远程调试组件的自动部署和加载后,在进程列表中找到目标.NET Core进程,选中后点击「附加」即可
标准流程失效时的修复方案
方案1:手动安装WSL2侧调试依赖
如果Rider未完成自动部署调试组件,可手动在WSL2终端执行以下操作:
- 安装基础依赖:
sudo apt update && sudo apt install -y unzip curl procps - 调整端口权限(仅当进程监听1024以下端口时需要):
sudo sysctl -w net.ipv4.ip_unprivileged_port_start=0 - 在Windows终端执行
wsl --shutdown重启WSL实例,重新启动.NET Core进程后再次尝试附加
方案2:SSH远程调试兜底方案
如果直接选择WSL环境仍然识别不到进程,可通过配置WSL2 SSH服务的方式实现附加:
- 在WSL2终端执行命令安装启动SSH服务:
sudo apt install openssh-server sudo systemctl enable ssh --now sudo passwd # 按提示设置当前WSL用户的登录密码
- 在WSL2终端执行
ip a | grep eth0,获取inet字段对应的WSL2内网IP地址 - 回到Rider的附加进程窗口,运行环境选择「SSH」,新增SSH连接:主机填写刚才获取的WSL2 IP,用户名和密码填写WSL2的账户信息,连接成功后即可看到WSL2内运行的所有进程,选中目标.NET Core进程完成附加即可
内容的提问来源于stack exchange,提问作者Tim Barrass
相关产品推荐
相关产品推荐

