CLion是JetBrains出品的C++ IDE,工程管理使用cmake。除了本地调试之外,CLion还支持远程调试,本文介绍下基于CLion的远程调试的配置,远程服务器环境是CentOS。

CentOS依赖依赖

# cmake
yum install cmake -y

# gcc & gdb
yum install gcc-c++ -y
yum install gdb -y

#gdbserver
yum install gdb-gdbserver -y

远程设置

基本代码

调试需要本地和远程的代码一致

#include <iostream>
#include <unistd.h>

int main() {
    for (int i = 0; i < 5; ++i) {
        std::cout << i << std::endl;
    }
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

远程gdbserver启动

远程调试依赖gdbserver来支持,通过gdbserver启动的程序,会先等待远程调试的连接,连接成功后再启动进程。

假设代码的根目录:/root/work/hello

cd /root/work/hello
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug
make

gdbserver :1234 /root/work/hello/build/hello 

注意:cmake需要指定-DCMAKE_BUILD_TYPE=Debug来支持调试

远程gdbserver动态attach

gdbserver还支持动态绑定到已经启动的进程

gdbserver :2345 --attach <PID>

本地CLion配置

  1. 添加一个gdb远程调试的配置 GDB Remote Debug
  2. 设置远程访问参数(target remote args): tcp:xx.xx.xx.xx:1234
  3. 设置远程路径和本地路径的映射(Path mappings)
  4. 远程调试连接成功后,像本地调试一样,可以设置断点,单步跟踪等

参考