Win10怎么用VS Code直接调试运行在远端Linux服务器上的Docker

冬浩同学_9156

冬浩同学_9156

2026-10-22

115人浏览

原创

在windows 10上用vs code直接调试远端linux服务器的docker容器,需配置ssh免密登录与代理转发、为容器添加sys_ptrace权限、使用dev containers扩展附加到容器,并通过launch.json中sourcefilemap映射路径实现源码级调试。

win10怎么用vs code直接调试运行在远端linux服务器上的docker

在Windows 10上用VS Code直接调试远端Linux服务器上的Docker容器,必须绕过“本地编辑→手动复制→远程执行”的低效链路,让编辑器原生感知容器内进程、符号表与文件路径。这要求VS Code不只连上服务器,还要穿透到容器命名空间内部,且调试器(如GDB/LLDB)能正确attach到容器中运行的可执行文件。

前置准备:确保远端Linux服务器满足调试基础条件

登录远端Linux服务器(如Ubuntu 22.04/CentOS 7+),执行以下检查:

运行docker --version确认Docker已安装且版本≥20.10;若未安装,先执行sudo apt update && sudo apt install docker.io(Debian/Ubuntu)或sudo yum install -y docker(CentOS)。

确认当前用户已加入docker组:sudo usermod -aG docker $USER,然后退出SSH重登,再运行docker ps验证无权限错误。

【关键前提】容器镜像必须包含调试所需工具链和符号信息:若调试C++程序,基础镜像不能是alpine:latest或scratch,而应选用ubuntu:22.04或debian:bookworm-slim,并在Dockerfile中显式安装gdb、strace、build-essential,并关闭编译优化(-O0)及开启调试符号(-g)。

配置SSH密钥免密登录并启用代理转发

在Win10的PowerShell中生成密钥对:ssh-keygen -t ed25519 -C "vscode-debug@win10",一路回车使用默认路径。

将公钥复制到远端服务器:ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server-ip,替换user和server-ip为实际值。

编辑本地%USERPROFILE%\.ssh\config文件,添加如下段落:

Host remote-docker
 HostName server-ip
 User user
 IdentityFile ~/.ssh/id_ed25519
 ForwardAgent yes
 RequestTTY force

这一步必须加RequestTTY force,否则后续docker exec -it交互式终端会失败;ForwardAgent yes用于让容器内也能复用本机SSH代理,方便Git操作或私有仓库拉取。

在远端容器中启用ptrace调试能力

Docker默认禁用ptrace系统调用,而GDB/Lldb调试必须依赖它。若跳过此步,VS Code调试时会出现“Operation not permitted”错误,断点全为空心圆。

Docker Image Puller
Docker Image Puller

使用 Python 脚本下载 Docker 镜像并打包为 tar 文件。用户说“下载镜像”“拉取镜像”“pull xxx”“帮我下载 nginx 镜像”等时触发。支持 SOCKS5 代理直连(推荐)和国内镜像站加速两种模式。

下载

方法一:启动容器时显式添加--cap-add=SYS_PTRACE参数:
docker run -d --cap-add=SYS_PTRACE --name myapp -p 8080:8080 myapp-image

方法二:若容器已运行,需先停掉并用新参数重启;不可对运行中容器动态追加cap——【不可逆操作】修改容器配置必须重建,无法热更新。

方法三(推荐):在docker-compose.yml中声明:

services:<br> myapp:<br>  cap_add:<br>   - SYS_PTRACE

VS Code中安装必要扩展并附加到容器

在Win10的VS Code中,安装两个核心扩展:
• Remote-SSH(Microsoft官方)
• Dev Containers(Microsoft官方)

按Ctrl+Shift+P打开命令面板,输入“Remote-SSH: Connect to Host...”,选择刚配置的remote-docker主机名,等待连接成功。

连接后,按Ctrl+Shift+P再次打开面板,输入“Dev Containers: Attach to Running Container...”,VS Code会自动列出远端所有正在运行的容器;选择目标容器(如myapp)。

此时VS Code会在右下角弹出“Rebuilding container…”提示,实际是创建一个临时开发容器挂载点,并注入调试支持脚本;等待状态栏显示“Dev Container: myapp”即表示已就绪。

配置launch.json实现源码级调试

打开项目根目录下的.vscode/launch.json(若无则新建),填入以下内容(以C++为例):

{
 "version": "0.2.0",
 "configurations": [
  {
   "name": "(gdb) Launch in Docker",
   "type": "cppdbg",
   "request": "launch",
   "miDebuggerPath": "/usr/bin/gdb",
   "program": "/workspace/build/myapp",
   "args": [],
   "stopAtEntry": false,
   "cwd": "/workspace",
   "environment": [],
   "externalConsole": false,
   "MIMode": "gdb",
   "setupCommands": [
    { "description": "Enable pretty-printing", "text": "-enable-pretty-printing", "ignoreFailures": true }
   ],
   "sourceFileMap": {
    "/workspace": "${workspaceFolder}"
   }
  }
 ]
}

注意"sourceFileMap"字段:它把容器内路径/workspace映射回本地VS Code打开的文件夹,否则断点无法命中;若本地工作区路径与容器挂载路径不一致(例如容器挂载的是/app),此处必须同步修改。

设置断点后,按F5启动调试,VS Code将自动在容器内执行gdb --interpreter=mi并加载符号,变量窗口、调用栈、内存视图全部可用。

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

457

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

940

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

3092

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

1016

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

909

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

474

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2816

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

5272

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

827

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习