You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode如何连接WSL中Docker容器内的gdbserver调试C++应用

错误原因梳理

你三次配置失败的核心问题如下:

  • 第一次报错spawn gdb ENOENT是因为WSL Ubuntu环境未安装gdb客户端,VSCode找不到对应的可执行文件。
  • 第二次和第三次报错是因为你错误将gdbpath/miDebuggerPath参数指向了gdbserver:gdbserver是运行在容器内的服务端程序,仅负责接收调试连接,VSCode在WSL侧需要调用的是gdb客户端,参数必须指向gdb路径而非gdbserver。
  • 关于Native Debug扩展安装位置:你通过WSL-Remote连接WSL开发,扩展安装在远程WSL端是正确的,不需要安装在Windows本地。
前置准备

先在WSL Ubuntu终端执行以下命令安装gdb客户端:

sudo apt update && sudo apt install -y gdb

同时确认你的C++代码编译时添加了-g参数保留调试符号,且WSL工作区中的二进制文件和容器内运行的是完全相同的版本。

正确配置

以下两种配置二选一即可,推荐优先使用微软官方C/C++扩展的cppdbg配置,稳定性更好。

1. cppdbg(微软C/C++扩展)配置

在.vscode/launch.json中添加如下配置:

{
    "name": "(gdb) Attach to WSL Docker",
    "type": "cppdbg",
    "request": "attach",
    "program": "${workspaceFolder}/app",
    "miDebuggerServerAddress": "172.17.0.2:9999",
    "miDebuggerPath": "/usr/bin/gdb",
    "cwd": "${workspaceFolder}",
    "MIMode": "gdb",
    "stopAtEntry": false,
    "externalConsole": false
}

2. Native Debug扩展配置

在.vscode/launch.json中添加如下配置:

{
    "name": "Native Debug Attach to Docker",
    "type": "gdb",
    "request": "attach",
    "executable": "${workspaceFolder}/app",
    "target": "172.17.0.2:9999",
    "remote": true,
    "cwd": "${workspaceRoot}",
    "gdbpath": "/usr/bin/gdb"
}
额外注意事项
  • 调试前确认WSL侧可以正常访问容器的9999端口,无防火墙或网络规则拦截。
  • 不需要每次手动启动容器内的gdbserver,也可以直接安装VSCode Dev Containers扩展,直接连接容器内部进行开发调试,不需要额外配置gdbserver转发。

内容的提问来源于stack exchange,提问作者Bak Itzik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:36:03