必须使用wsl2并安装remote-wsl扩展,在wsl中安装gdb、python3-dbg等调试依赖,通过code .或wsl: connect命令直连,配置launch.json指向wsl内gdb和正确程序路径,方可实现断点100%命中。

要在 Windows 10 上用 VS Code 快速进入 WSL 环境调试 C/C++ 或 Python 代码,必须绕过手动配置 SSH、避免反复切换终端、杜绝在 Windows 侧编译失败的路径错误——核心是让 VS Code 的调试器直接调用 WSL 中的 GDB/Python 解释器,且断点命中率 100%。
确认 WSL 已就绪并启用 WSL2
以管理员身份打开 PowerShell,执行:wsl --list --verbose。若状态为 Stopped,运行 wsl --shutdown → wsl 启动;若显示 WSL1,则必须升级:wsl --set-version Ubuntu 2(Ubuntu 为你的发行版名,可用 wsl -l -o 查看)。
【必须为 WSL2】 因为 WSL1 不支持 ptrace 系统调用,GDB 无法 attach 进程,所有断点都会静默失效。
安装 VS Code 与 WSL 扩展
从官网下载 Windows 版 VS Code 安装包(非 WSL 内安装),安装时勾选 “Add to PATH”。
启动 VS Code → 左侧扩展图标 → 搜索 “WSL” → 安装 Microsoft 官方发布的 Remote - WSL 扩展。
安装后,右下角状态栏会出现远程连接图标,但此时不要点它——先别急着连,因为 WSL 里还缺关键调试依赖。
在 WSL 中补全调试运行时库
打开 Ubuntu 终端(不是 Windows CMD),依次执行:
sudo apt update && sudo apt install -y gdb python3-pip python3-debuginfo gdb-multiarch
这一步不能跳过:gdb-multiarch 支持跨架构调试(如 ARM target 在 x86_64 WSL 上调试),python3-debuginfo 提供 .pyc 符号表,否则 Python 断点进不了函数体内部。
若提示 E: Unable to locate package python3-debuginfo,说明你用的是较新 Ubuntu(如 24.04),改用:sudo apt install -y python3-dbg。
从 VS Code 直连 WSL 并打开项目
方法一:快捷命令直连
Ctrl + Shift + P → 输入 WSL: Connect to WSL → 回车。VS Code 自动重载,底部状态栏显示 WSL: Ubuntu。
方法二:终端命令直连(推荐用于已有项目)
在 WSL 终端中进入你的代码目录,例如 cd ~/inav/src,然后执行:code .。
VS Code 将自动检测到当前在 WSL 环境中,弹出提示“Reopen in Remote”,点击即可。此时资源管理器左侧显示的路径是 /home/yourname/inav/src,不是 C:\Users\...。
注意:如果 code . 报错 command not found,说明 VS Code 未加到 WSL 的 PATH —— 返回 Windows 重装 VS Code,务必勾选 “Add to PATH”。
配置 launch.json 实现一键调试
第一步:按 Ctrl + Shift + P → 输入 Debug: Open launch.json → 选择环境,如 C++ (GDB/LLDB) 或 Python。
第二步:替换生成的配置。以 C++ 为例,删掉全部内容,粘贴以下最小可用模板:
{<br> "version": "0.2.0",<br> "configurations": [<br> {<br> "name": "(gdb) Launch",<br> "type": "cppdbg",<br> "request": "launch",<br> "miDebuggerPath": "/usr/bin/gdb",<br> "program": "${workspaceFolder}/build/target.elf",<br> "args": [],<br> "stopAtEntry": false,<br> "cwd": "${workspaceFolder}",<br> "environment": [],<br> "externalConsole": false,<br> "MIMode": "gdb"<br> }<br> ]<br>}
第三步:确保 "program" 路径真实存在。INAV 编译后 ELF 文件默认在 build/ 下,若你用 make TARGET=SPRACINGF3,则路径应为 build/SPRACINGF3/SPRACINGF3.elf。填错路径会导致调试器启动即退出,无任何报错提示。
第四步:在代码行号左侧单击设断点 → 按 F5 启动调试 → 看到 GDB 控制台输出即表示成功接入 WSL 中的调试器。











