自动同步

image.png

  • 打开CLion的设置,进入到 Preferences | Build, Execution, Deployment | Deployment
  • 点加号,添加一个远程配置
  • 设置为SFTP协议,设置远程ip、port、pass然后点击Test Connection,确认是否连接成功

image.png

  • 切换到Mappings
  • 设置本地的代码根目录Local path
  • 设置远程的代码根目录 Deployment path

image.png

  • 上传一个文件
  • Upload是上传,Download是下载,本地与远程所映射的目录我们在上面设置过了
  • 上传成功

image.png
设置自己同步
image.png

  • 在Tool - Deployment - Automatic Upload(always) 设置为自动同步

    远程调试

    linux依赖

    ```java

    cmake

    yum install cmake -y

gcc & gdb

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

gdbserver

yum install gdb-gdbserver -y

sudo apt-get install gdbserver

  1. <a name="FhGJs"></a>
  2. ## 添加GDB Remote Debug
  3. 本地clion配置<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/520075/1622956775140-eb8ad091-b966-4ea0-b128-dffebd5d35f9.png#clientId=u55581b20-4360-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=82&id=u9f0444b2&margin=%5Bobject%20Object%5D&name=image.png&originHeight=82&originWidth=325&originalType=binary&ratio=2&rotation=0&showTitle=false&size=5464&status=done&style=none&taskId=ufd6a1e9c-4a13-4c8d-8b20-1f134aeee61&title=&width=325)<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/520075/1622956788102-8d2199b0-05d8-4f00-b2ef-a0526cd1c03f.png#clientId=u55581b20-4360-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=212&id=u8719641e&margin=%5Bobject%20Object%5D&name=image.png&originHeight=423&originWidth=417&originalType=binary&ratio=2&rotation=0&showTitle=false&size=41140&status=done&style=none&taskId=u431e32d6-735b-4885-9222-aa088ba0224&title=&width=208.5)<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/520075/1622956800139-d82e8a2d-f034-458e-b631-358a986ec16b.png#clientId=u55581b20-4360-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=278&id=udd4a3492&margin=%5Bobject%20Object%5D&name=image.png&originHeight=556&originWidth=1363&originalType=binary&ratio=2&rotation=0&showTitle=false&size=129178&status=done&style=none&taskId=ua199306f-a4ab-4d6d-83e4-61b4a174c25&title=&width=681.5)<br />设置gdb remote配置
  4. - 添加一个GDB远程调试的配置 GDB Remote Debug
  5. - 设置远程访问参数(target remote args): tcp:xx.xx.xx.xx:1234
  6. - 设置远程路径和本地路径的映射(Path mappings)
  7. - 远程调试连接成功后,像本地调试一样,可以设置断点,单步跟踪等
  8. - 调试需要本地和远程的代码一致
  9. <a name="KnLd8"></a>
  10. #### 两个方法设置远程配置
  11. **方法一、** 远程gdbserver的启动<br />远程调试依赖gdbserver的来支持,通过gdbserver的启动的程序,会先等待远程调试的连接,连接成功后再启动进程。<br />假设代码的根目录:/data/pzqu/read_phy_disk_use/,执行以下代码以后编译
  12. ```java
  13. cd /data/pzqu/read_phy_disk_use/build
  14. cmake .. -DCMAKE_BUILD_TYPE=Debug
  15. make
  16. gdbserver :1234 ./read_phy_disk_use

注意:cmake的指定需要-DCMAKE_BUILD_TYPE=Debug来请获取调试
CMakeList文件(注意设置为debug模式):

cmake_minimum_required(VERSION 3.10)
project(hello_world)

set(CMAKE_CXX_STANDARD 11)
SET(CMAKE_BUILD_TYPE "Debug")

add_executable(hello_world main.cpp)

需要说明,CLion必须使用CMakeList来编译代码,无法用Makefile。CMakeList要比Makefile好用很多。
image.png
image.png
方法二 远程gdbserver的动态连接
gdbserver的还支持动态绑定到已经启动的进程

gdbserver :1234 --attach <PID>

image.png
attash成功后

现在可以打断点调试了

# 命令格式为:gdbserver IP:PORT 程序名(包含其目录)
gdbserver 10.10.108.39:8888 /mnt/leilei.zhou/slu/master/work_flow/bin/slu_test
# 开启gdbserver的命令格式为:gdbserver IP:PORT --attach PID
gdbserver 10.10.14.45:8888  --attach 2382

image.png
然后就可以用本地的Clion debug服务器端的代码了。
在本地端Clion中打个断点,Run -> Debug ‘xxx’
服务端会出现“Remote debugging from host xx.xx.xx.xx”
xx.xx.xx.xx是Clion端的IP地址。如下图所示,这样代表跑起来了。
image.png

用CLion完全的在远程工作

这是一个非常非常爽的操作,以后就可以完全的用IDE来写代码了,虽然使用命令行显得比较专业,但是使用工具可以有效的提高工作效率,何乐而不为呢?
image.png
要让当前项目使用我们配置的 Toolchains,需通过如下操作将设置的Remote Host 放在default之上,后续的重新打开当前项目才会触发Remote Host 的配置。
image.png
设置Toolchains工具链

  • 进入 Preferences | Build, Execution, Deployment | Toolchains
  • 设置远程连接信息,CLion会自动监测CMake gcc g++ gdb的信息

image.png
设置cmake

  • 进入Preferences | Build, Execution, Deployment | CMake
  • Toolchain 选择我们刚刚设置的
  • 上面的Automatically reload CMake project on editing 的设置勾上的时候,只要代码有修改就会自动编译

image.png
编译成功

  • 现在已经配置了远程Toolchains工具链并配置了相应的CMake配置文件
  • 上图是自动编译和上传到的目录/tmp/tmp.pIdETgMIBR,然后我们只要设置为自动同步目录就成了,如下图

image.png
设置为自动同步目录

  • 现在已经设置成了自动同步目录,只需在运行/调试配置切换器中选择正确的CMake配置文件,即可以完全远程的方式构建,运行和调试应用程序和测试。

image.png
添加Application来跑我们的程序
image.png
远程运行,本地输出结果
image.png