vscode 远程连接 docker 容器进行 C++ 代码调试实践

vscode 是可以利用远程的编译环境在本地进行打断点调试的。


文章目录

  • vscode 远程连接 docker 容器进行 C++ 代码调试实践
  • 服务器端创建容器并进行端口映射
  • 容器设置
  • vscode 远程连接容器调试
  • sftp 插件上传下载文件


服务器端创建容器并进行端口映射

docker run -it \
    --name abacus2 \
    --workdir /root \
    --entrypoint /bin/bash \
	-p 8010:22  \
    -v /tmp:/tmp \
    -v /opt/tmp:/opt/tmp \
    -v /root:/root\
    -v /root/abacus:/root/abacus\
    hub.byted.org/reckon/data.aml.abacus_base:0dc79d9dbff213752f8863a40841580b

其中关键是端口映射,参数:-p 宿主机port:容器port。上面的命令中 -p 8010:22,就是将容器的 22 号端口(ssh服务端口)映射到宿主机(服务器)的 8010 端口。在本文中,因为需要使用 ssh 服务端口,所以,容器端口必须写 22。

容器设置

  • 设置密码 passwd
  • 修改ssh配置文件以下选项: vim /etc/ssh/sshd_config,末尾增加
#PermitRootLogin prohibit-password # 默认打开 禁止root用户使用密码登陆,需要将其注释
RSAAuthentication yes           #启用 RSA 认证
PubkeyAuthentication yes    #启用公钥私钥配对认证方式
PermitRootLogin yes             #允许root用户使用ssh登录
  • 启动 sshd 服务: /etc/init.d/ssh restart
  • exit 退出容器,使用 ssh root@127.0.0.1 -p 8010 进行连接测试。输入密码成功进入容器内部即配置成功。

vscode 远程连接容器调试

vscode 插件安装:

  • 安装 remote-ssh 插件
  • 安装 CodeLLDB 调试器插件

配置远程连接文件:

vscode集成远端docker vscode远程docker开发_vscode集成远端docker

Host 10.248.134.122
  HostName 10.248.134.122
  User root
  Port 8010

Host 可以根据自己的喜好起一个标志名称。HostName 必须填写需要远程连接的服务器 IP 地址。User 此处因为远程的是服务器上配置的docker容器,默认用户名是 root,此处需要改下为 root。

点击远程资源管理器面板,新建连接到远程服务器:

vscode集成远端docker vscode远程docker开发_c++_02

打开远程 /root/ 文件夹。

启动调试->打开 launch.json,配置如下:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "type": "lldb",
            "request": "launch",
            "name": "exec",
            "program": "${workspaceFolder}/abacus/abacus-develop/bin/test/abacus",
            "args": [],
            "cwd": "${workspaceFolder}/abacus/abacus-develop/bin/test/"
        }
    ]
}

其中,program 是可执行程序的位置,${workspaceFolder} 是你打开的远程目录,args 是传入参数,cwd 是程序执行的当前目录。

现在可以像 vs 一样打断点进行调试了。

vscode集成远端docker vscode远程docker开发_服务器_03

sftp 插件上传下载文件

  • vscode 本地打开你想上传的文件(夹)
  • 安装 sftp 插件
  • Ctrl+Shift+P 搜索 sftp,打开配置文件 sftp.json (同一目录下自动生成)
  • remotePath 写清楚
  • 侧边栏选中文件,右键选择,Upload 或者 Download。因为已经配置了同目录下的 sftp.json 文件,那么 Upload 就会上传到它的指向,Download 就会根据这个名称去找上面的这个文件下载。