一、本地调试方法
本地调试环境只需要配置好cmake中debug选项
打好断点即可调试
二、clion配置
1. toolchains工具链设置
配置c++代码需要执行的环境,是在本地电脑,还是远程服务器,或者docker容器等
- 如果是在本地使用默认system中的配置,编译运行都在本地
- 如果是在远程,新增新的工具链,选择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 设置的断点处停止。如果没有,请仔细检查运行/调试配置设置中的符号文件和路径映射是否正确指定。