clion远程调试指南

CLion作为JetBrain出品的跨平台环境下强大的C/C++ IDE,满足了在Mac上开发的一大堆需求。而之前使用中比较麻烦的一点是CLion无法实现全自动的远程编译+调试。然而,自v2018.3版本之后,CLion推出了Full Remote Mode,实现了轻松一点即可在本地完成远端设备上的编译与调试。借助这个,甚至可以实现在Mac上完成对树莓派一类嵌入式系统的编译和调试工作,同时也可以完成用Docker启个系统做编译的操作。

要点

  • 本地系统: macOS, Linux or Windows
  • 远端系统: Linux
  • 代码位置:原始处于本地机器上,CLion会自动同步到远端机器上
  • 项目模式:CMake Project才可使用
  • 本地设备为macOS或Linux系统的情况下,需要安装rsync,如果是Windows,需要sftpgzip压缩以便代码同步.

步骤

新建一个带远程调试的工具链

  1. Settings / Preferences | Build, Execution, Deployment | Toolchains 点击左下角加号图标新建一个工具链。
  2. 从下拉菜单选择Remote Host并点击Credentials右侧的齿轮图标配置远端连接,在打开的对话框中,将ssh的用户名密码配置进去以登录远端机器。
  3. 建立连接后,CLion会在远端机器的/usr/bin/cmake/usr/bin/gdb两个默认地址查找CMake和GDB,如果没有的话,需要人工配置下对应的地址。

    (如果你和我一样是CentOS 7.x的用户,你会发现机器里的GDB版本默认是7.6版的,无法满足CLion的要求,需要去下一个符合标准的版本编译安装)
  4. 可以通过上下表示把新建立的远程调试设为默认方式,设为默认值后,远程调试会成为你所有新建和打开工程的默认调试方式。

建立相应CMake文件

Settings / Preferences | Build, Execution, Deployment | CMake选项下,点击加号按钮新建一个CMake配置,在Toolchain中使用刚刚建立的远程调试工具链

检查与调整部署配置

  • 当你建立了一个到远端机器的链接,CLion会把这个链接加入到Settings / Preferences | Build, Execution, Deployment | Deployment,可以查看确认:

    同时,在Mappings选项卡下,可以修改代码上传到远端之后的目录,以不上传到默认的tmp目录中:
  • 通过File Transfer窗口(View | Tool Windows | File Transfer)可以监控整个同步过程:

同步头文件搜索目录

为了正确解析并编译代码,CLion需要把你的头文件搜索目录全部同步到远端。但由于耗时比较长,v2019.1版本之后,CLion只在第一次同步的时候自动同步头文件,后面的时间都需要用户通过Tools | Resync with Remote Hosts自行手动同步头文件搜索目录。

编译、运行与调试

配置完成之后,选择对应建立的CMake配置,即可实现代码远程调试。

可以用如下代码验证下执行的效果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <sys/utsname.h>
#include <stdlib.h>

int main() {
struct utsname name;
if (uname(&name))
exit(-1);

std::cout << "Hello! Your computer's OS is "
#ifdef __linux__
<< "Linux "
#elif __APPLE__
<< "Mac "
#endif
<< name.release << "\n";

return 0;
}

参考资料

CLion - Full Remote Mode
Stay local, let your IDE do remote work for you!