Clion remote development

参考:

Remote Development with Clion

Remote development

Clion远程调试

基于CLion和gdbserver实现远程调试c程序

IDEA系列软件,使用相同的架构,在我们开发的过程中,项目可以被分为以下四个组件

image

可以在windows进行编码,然后同步代码到Ubuntu进行交叉编译,再将编译出的可执行文件下载到开发板,通过gdbserver运行进行调试

开发环境的不同模式:

本地开发

image

远程开发

场景讲解

image

image 这里可以看到,会有许多同步工作需要做,为了避免错误,可以使用工具async和SCP来进行,Clion也提供同步的功能.

为了让远程开发,更加自动化简单化,Clion提供了两种远程Debug模式

  1. Remote Debug
  2. Remote GDB Server

image

Clion还提供了组件可以通过网络通信的方式,使用远程的gdb server来进行调试

image

此时本地设备只有源代码,更像是一个单纯的代码编辑器,部署设备上有源代码,编译工具,可执行代码,和调试符号.

小结

主要区别技术在哪里执行编译这个比较消耗资源的操作.

Remote development

全局设置 windowns下idea修改配置

image

image

Full remote mode

全远程模式,主要是通过SSH连接到目标设备进行开发

常规流程

  1. 代码保存在本地设备,通过同步工具,同步到目标设备
  2. Clion调用远端编译工具,编译可执行文件
  3. Clion调用远端gdb,执行调试

Full remote mode demo

添加配置ToolChain

目标 : 为了调用远程编译工具编译远程平台的可执行文件 注意 : 如果需要root登录需要修改server的ssh配置 参考: Ubuntu 20.04 配置ssh可以用root登录

image

image

image

创建相应的CMake配置文件

因为在上步骤将新建的Remote ToolsChain设置为默认了 这里就会自动连接到远端设备的Cmake/Make

如果没有设置默认ToolsChains 就需要手动设置配置一下Cmake CMakeProfile 注意: 这里其实就是选择用哪里的什么编译器来编译当前的代码

在 Makefile 设置中选择远程工具链

因为在上步骤将新建的Remote ToolsChain设置为默认了 这里就会自动连接到远端设备的Cmake/Make

image

检查和验证部署配置

image

image

排除路径

默认情况下,CLion 会索引并同步 CMakeLists.txt 中列出的所有目录。 但是,如果您使用将目录标记为 | 来排除目录。 排除动作,远程部署会被标记为排除路径,不会与远程机器同步。 当您在配置远程工具链之前排除文件夹时,会自动执行此操作。

您可以在部署条目设置的专用选项卡中检查和调整排除的路径 按需进行设置

image

Resync头文件搜索路径

Clion 会将目标平台用到的所有头文件,包括标准库的头文件都同步到本地 CLion 仅在初始文件传输时自动执行。 之后,它不会由 CMake 或 Makefile 重新加载触发。 因此,每次切换编译器或更改项目依赖项时,请确保通过调用 Tools | 手动更新头搜索路径。 与远程主机重新同步 注意 : 自动同步即可

编译,运行,调试

CMake

在选择远程ToolChains后 执行编译

image

会看到选择的是远端设备的Cmke进行编译的执行运行

Makefile

makefiles-support

添加Makefile配置

Run -> Edit Configurations …

image

image

回到Clion设置断点调试

image

成功~!

Remote debug via gdbserver/lldb-server

通过gdbserver/lldb-server远程调试在如下场景特别有用:

在目标设备上,通过server命令运行可执行文件(注意:编译可执行文件的时候必须带有完整的调试信息)

Clion 提供了两种远程调试模式:

注意: 如果想在本机编辑非本机平台可执行文件,需要配置修改ToolsChain

注意: 上述情况,可以理解为,Clion作为代码编辑器和gdb client 调试工具, 编译工作并不是Clion来执行

Remote GDB Server

常规流程

  1. 在本地编辑代码
  2. 在本地编译代码
  3. 上传可执行文件到远端
  4. 远端执行gdbserver
  5. 本地Clion gdb client 调试
Remote GDB Server Demo

remote-gdb-server

注意 : 感觉这种远程方式应用场景较少,不做详细测试了

Remote Debug

常规流程:

  1. 准备好正确编译的带调试信息的可执行文件(以下均称为可执行文件),需要注意编译平台,目标平台可能和Clion的工作平台并不一致
  2. 目标设备上有可执行文件,本地设备上同步的相同的可执行文件(同步机制下一节讲解)
  3. Clion创建一个Remote Debug的调试配置,指定好可执行文件(主要目的是为了调试信息),在Clion设置断点等.
  4. 在目标设备上通过gdbserver/lldb-server运行可执行文件
  5. 返回本地设备的Clion设置断点进行调试
Remote Debug Demo

参考: Cmake&C++ Demo

image

image

image

设置上传/下载/自动同步,按需操作

image

image

image

image

image

目标是要在目标设备上运行此段代码并进行调试

然后在目标设备上运行gdbserver

root@leonli-System-Product-Name:/home/sftp/<path>/build# gdbserver localhost:8080 ./<bin_file>
Process ./<bin_file> created; pid = 501801
Listening on port 8080

Clion上设置断点并点击调试

image

成功~!