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 调试器插件
配置远程连接文件:
Host 10.248.134.122
HostName 10.248.134.122
User root
Port 8010
Host 可以根据自己的喜好起一个标志名称。HostName 必须填写需要远程连接的服务器 IP 地址。User 此处因为远程的是服务器上配置的docker容器,默认用户名是 root,此处需要改下为 root。
点击远程资源管理器面板,新建连接到远程服务器:
打开远程 /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 一样打断点进行调试了。
sftp 插件上传下载文件
- vscode 本地打开你想上传的文件(夹)
- 安装 sftp 插件
- Ctrl+Shift+P 搜索 sftp,打开配置文件 sftp.json (同一目录下自动生成)
- remotePath 写清楚
- 侧边栏选中文件,右键选择,Upload 或者 Download。因为已经配置了同目录下的 sftp.json 文件,那么 Upload 就会上传到它的指向,Download 就会根据这个名称去找上面的这个文件下载。