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
远程设置
基本代码
调试需要本地和远程的代码一致
CMakeLists.txt
cmake_minimum_required(VERSION 2.8) project(hello) set(CMAKE_CXX_STANDARD 11) add_executable(hello main.cpp)
main.cpp
#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配置
- 添加一个gdb远程调试的配置
GDB Remote Debug
- 设置远程访问参数(target remote args):
tcp:xx.xx.xx.xx:1234
- 设置远程路径和本地路径的映射(Path mappings)
- 远程调试连接成功后,像本地调试一样,可以设置断点,单步跟踪等