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

Posted 陆嵩

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vscode 远程连接 docker 容器进行 C++ 代码调试实践相关的知识,希望对你有一定的参考价值。

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

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

文章目录

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

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 一样打断点进行调试了。

以上是关于vscode 远程连接 docker 容器进行 C++ 代码调试实践的主要内容,如果未能解决你的问题,请参考以下文章

VSCode + docker + SSH实现远程连接服务器并进行开发

vscode连接远程服务器中的容器

VScode搭建docker环境

VScode搭建docker环境

VsCode远程调试,更改pythonpath指向docker容器的python解释器

VsCode轻松使用docker容器-Remote Containers