第九十九篇 c++远程服务器调试,docker调试

一、本地调试方法

本地调试环境只需要配置好cmake中debug选项
在这里插入图片描述
打好断点即可调试

在这里插入图片描述

二、clion配置

1. toolchains工具链设置

配置c++代码需要执行的环境,是在本地电脑,还是远程服务器,或者docker容器等

  1. 如果是在本地使用默认system中的配置,编译运行都在本地
    在这里插入图片描述
  2. 如果是在远程,新增新的工具链,选择Remote Host选项
    在这里插入图片描述
    点击credentials 按钮,增加新的服务器连接
    在这里插入图片描述
    新增完毕之后返回toolchains界面,远程服务器cmake,g++环境是否可用,如果目录需要改动,自行修改即可

1. cmake

配置好toolchains之后,再来配置cmake选项, 可以选择已经配置好的toolchains名称,docker服务或者远程服务
在这里插入图片描述

2. deploy

部署代码相关配置,远程或者docker配置时,需要配置远程服务器的的连接,以及对应的路径,需要注意的事root path是服务器根路径
在这里插入图片描述
在mappings中可以映射本地与服务的路径映射关系,Exclude paths 排除一些不需要的路径信息
在这里插入图片描述

3. ssh

配置远程ssh 连接
在这里插入图片描述

4. debug server

5. debug

三、服务器调试

1. 环境配置

需要在 CentOS 上安装必要的软件,安装的软件包括:

cmake
gcc
gdb
gdbserver
安装命令如下:

yum install cmake -y
yum install gcc-c++ -y
yum install gdb -y
yum install gdb-gdbserver -y

cmake 用于管理编译过程,生成 Makefile 文件;gcc-c++ 是编译器;gdb 是个调试工具,程序调试功能实际上就是由 gdb 提供的;gdbserver 用于监听某个 TCP 端口,允许远程主机连接,以实现远程调试功能。

2. 调试配置

cmake中配置本地调试
在这里插入图片描述
cmake中配置远程服务器工具链
在这里插入图片描述
编译之前先把项目同步到远程服务器端,也可以选择自动上传
在这里插入图片描述
cmake编译之后,选择运行按钮,会出现本地和远程两个环境,勾选任意一个环境运行调试即可
在这里插入图片描述
打好断点,即可进入远程调试模式中
在这里插入图片描述

四、docker调试

1. c++, python docker镜像环境

Dockerfile

FROM debian:10

ENV venv_dir /app/python-env/venv
EXPOSE  22
SHELL ["/bin/bash", "-c"]

RUN sed -i "s/deb.debian.org/mirrors.aliyun.com/g" /etc/apt/sources.list && \
  apt-get update -y && apt-get upgrade -y && \
  apt-get install -y build-essential gfortran cmake autoconf libtool pkg-config git sudo && \
  apt-get install -y liblapack-dev libssl-dev libgflags-dev libhdf5-dev && \
  apt-get install -y python3 python3-dev python3-pip python3-venv && \
  python3 -m venv ${venv_dir} && \
  source ${venv_dir}/bin/activate && \
  pip3 config set global.index-url https://nexus.udai.link/repository/pypi-all/simple && \
  apt-get install -y libhdf5-dev && \
  echo "source /app/python-env/venv/bin/activate" >> ~/.bashrc && \
  source ~/.bashrc && \
  # 创建ssh,gdb
  apt-get install -y  openssh-client  openssh-server rsync gdb gdbserver vim -y && \
  echo 'root:root'|chpasswd && \
  mkdir -p /var/run/sshd && \
  echo "PermitRootLogin yes" >>/etc/ssh/sshd_config && \
  echo "success"


EXPOSE  22
RUN mkdir -p /app
WORKDIR /app
CMD     ["/usr/sbin/sshd", "-D"]

build镜像:

docker build -t test/env/cpy:latest -f Dockerfile .

2. ssh 配置

Dockerfile中已经配置好ssh 相关,只需要在运行时,映射端口即可ssh登入容器

docker run -d -p 2222:22 test/env/cpy:latest

容器运行成功后,使用ssh登入连接

ssh -p 2222 root@127.0.0.1 

若docker存在于服务器端,则需要登入服务器ip以及对应的2222端口即可

3. gdb gdbserver等

docker中必须要安装gdb或者gdbserver

4. 调试流程

docker调试只需要把ssh 走通之后,类似于远程服务器的方式进行调试

启动容器:

docker run --security-opt seccomp=unconfined -itd -p 2222:22 -p 1234:1234 -it test/env/cpy:latest

–security-opt seccomp=unconfined 打开安全模式,是为了gdb调试可以连接进容器
-p 1234:1234 映射1234端口用于调试使用

配置Remote Debug以及路径映射
在这里插入图片描述
在服务器端执行可执行文件

gdbserver :1234 hello_world_run

在这里插入图片描述
在 CLion 中,在代码中放置断点,然后应用操作启动调试器为新创建的远程调试配置启动调试会话。

CLion 的调试器将连接到正在运行的远程进程。终端将显示Remote debugging from host…消息,您还可以在调试器控制台中查看Debugger connected to…消息。

现在您可以检查您的代码,就好像它在本地运行一样(例如,像往常一样单步执行并检查变量):
在这里插入图片描述

通常,您的程序应该在 IDE 设置的断点处停止。如果没有,请仔细检查运行/调试配置设置中的符号文件和路径映射是否正确指定。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 要在VSCode中进行远程调试docker容器,可以按照以下步骤进行操作。首先,确保你已经安装了VSCode和Docker,并且已经在远程服务器上启动了docker daemon。然后,使用VSCode的remote-ssh插件连接到远程服务器。在远程服务器的命令行中启动docker,并在docker容器中配置ssh连接。你可以修改ssh的config文件,允许root用户远程登录,并设置root用户的密码。接下来,在VSCode中使用remote-ssh插件连接到docker容器进行远程调试。你可以在VSCode的配置文件中添加相关的主机配置,包括主机名、用户名、端口等信息。然后,你就可以在VSCode中进行远程调试docker容器内的代码了。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [VSCode连接远程docker容器进行代码调试](https://blog.csdn.net/TracelessLe/article/details/119060513)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [vscode连接docker远程调试](https://blog.csdn.net/DCGJ666/article/details/108536065)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值