使用Clion优雅的完全远程自动同步和远程调试c(下)

简介: 使用Clion优雅的完全远程自动同步和远程调试c(下)

方法一、 远程gdbserver的启动

 

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

 

假设代码的根目录:/data/pzqu/read_phy_disk_use/,执行以下代码以后编译


cd /data/pzqu/read_phy_disk_use/build
cmake .. -DCMAKE_BUILD_TYPE=Debug
make
gdbserver :1234 ./read_phy_disk_use

注意:cmake的指定需要-DCMAKE_BUILD_TYPE=Debug来请获取调试

aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAxOS9wbmcvMzU4ODY0LzE1NzE5MTM2NzM5NDctNTliZTM2N2QtZjdjZi00NTBiLWFkNDQtNGViMTRkYzRkZWYzLnBuZw.png

aHR0cHM6Ly9hc2sucWNsb3VkaW1nLmNvbS9odHRwLXNhdmUvMzA5NzQ2NC9iczRuanFqeHVnLnBuZw.png


方法二 远程gdbserver的动态连接

 

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

 

gdbserver :1234 --attach <PID>

 

aHR0cHM6Ly9hc2sucWNsb3VkaW1nLmNvbS9odHRwLXNhdmUvMzA5NzQ2NC82MWlvZ2tzYWMxLnBuZw.png

打断点开始调试

aHR0cHM6Ly9hc2sucWNsb3VkaW1nLmNvbS9odHRwLXNhdmUvMzA5NzQ2NC9ndjN5bDU4MjczLnBuZw.png


  • 点击小虫子开始调试

aHR0cHM6Ly9hc2sucWNsb3VkaW1nLmNvbS9odHRwLXNhdmUvMzA5NzQ2NC9wOWMxNnpteGNrLnBuZw.png

  • 我们可以看到代码停止到了断点处
  • Variables 是可以自己设置的watch
  • 和正常调试方式一样啦


用CLion完全的在远程工作

 

这是一个非常非常爽的操作,以后就可以完全的用IDE来写代码了,虽然使用命令行显得比较专业,但是使用工具可以有效的提高工作效率,何乐而不为呢?

 

aHR0cHM6Ly9hc2sucWNsb3VkaW1nLmNvbS9odHRwLXNhdmUvMzA5NzQ2NC80bWgwNXZxaTNtLnBuZw.png

进入 Preferences | Build, Execution, Deployment | Toolchains

设置远程连接信息,CLion会自动监测CMake gcc g++ gdb的信息


aHR0cHM6Ly9hc2sucWNsb3VkaW1nLmNvbS9odHRwLXNhdmUvMzA5NzQ2NC9oNTByY3QzbXlqLnBuZw.png


进入Preferences | Build, Execution, Deployment | CMake

Toolchain 选择我们刚刚设置的

上面的Automatically reload CMake project on editing 的设置勾上的时候,只要代码有修改就会自动编译

aHR0cHM6Ly9hc2sucWNsb3VkaW1nLmNvbS9odHRwLXNhdmUvMzA5NzQ2NC9qMmc0dTJsdDNmLnBuZw.png

现在已经配置了远程Toolchains工具链并配置了相应的CMake配置文件


上图是自动编译和上传到的目录/tmp/tmp.pIdETgMIBR,然后我们只要设置为自动同步目录就成了,如下图


aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAxOS9wbmcvMzU4ODY0LzE1NzE5MTM3MTUxNDYtNTJkYTNjMWUtZjZlMy00NGI0LWI1N2YtMjg0YmFlZTAzOWFiLnBuZw.png


aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAxOS9wbmcvMzU4ODY0LzE1NzE5MTM3MTUxNDYtNTJkYTNjMWUtZjZlMy00NGI0LWI1N2YtMjg0YmFlZTAzOWFiLnBuZw.png


aHR0cHM6Ly9jZG4ubmxhcmsuY29tL3l1cXVlLzAvMjAxOS9wbmcvMzU4ODY0LzE1NzE5MTM3MTUxNDYtNTJkYTNjMWUtZjZlMy00NGI0LWI1N2YtMjg0YmFlZTAzOWFiLnBuZw.png


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


aHR0cHM6Ly9hc2sucWNsb3VkaW1nLmNvbS9odHRwLXNhdmUvMzA5NzQ2NC9wcWZ4cW50bmJiLnBuZw.png


添加Application来跑我们的程序


aHR0cHM6Ly9hc2sucWNsb3VkaW1nLmNvbS9odHRwLXNhdmUvMzA5NzQ2NC91dDB3a3JmMnJkLnBuZw.png

远程运行,本地输出结果

image.png


  • 远程运行,本地自动调试

 

总结


  • 配置CLion中的同步信息:同步到哪台机器的哪个目录。
  • 使用 Deployment 让本地和远程可以自动同步和自动下载,手动同步和手动下载代码
  • 配置GDB remote Debug设置
  • 使用gdbserver来启动程序进行调试
  • 使用gdbserver attach依附已经启动的程序进行调试
  • 完全在本地进行远程代码调试


其他

 

  • 这种方式是不是非常的优雅,这样我们只要不断的添加工具链(Toolchains)就可以在本地应对数不清的远程环境了。
  • 这种方式应该适用于JetBrain全家桶
相关文章
|
NoSQL IDE 网络协议
使用Clion优雅的完全远程自动同步和远程调试c(上)
使用Clion优雅的完全远程自动同步和远程调试c(上)
使用Clion优雅的完全远程自动同步和远程调试c(上)
|
3月前
clion中cmake配置含义
clion中cmake配置含义
81 0
|
3月前
|
开发工具 git 计算机视觉
在Ubuntu16.04上配置CLion的OpenCV4.3.0开发环境
在Ubuntu16.04上配置CLion的OpenCV4.3.0开发环境
32 0
|
5月前
Clion-2023.1.4配置CMake-3.25.3
Clion-2023.1.4配置CMake-3.25.3
|
5月前
|
IDE 开发工具 C++
快速开始c,配置Clion
快速开始c,配置Clion
|
6月前
|
Ubuntu 编译器 Linux
百度搜索:蓝易云【Ubuntu18.04系统下配置Clion教程】
现在您已经成功配置了CLion在Ubuntu 18.04系统上进行C/C++开发。开始编写和调试您的代码吧!
69 0
|
Ubuntu Linux 网络安全
clion配置Linux远程开发环境–开发QT桌面软件
接下来可以开始配置clion的远程开发环境 1.配置Clion工具链
731 0
|
C++
Clion配置单个project下可以运行多个CPP文件的main函数
Clion配置单个project下可以运行多个CPP文件的main函数
1270 0
|
IDE 编译器 Linux
CLion + MinGW64配置C语言开发环境 Visual Studio安装
CLion + MinGW64配置C语言开发环境 Visual Studio安装
CLion + MinGW64配置C语言开发环境 Visual Studio安装
|
弹性计算 并行计算 NoSQL
Clion配置远程CUDA调试环境
在阿里云GPU ECS实例上搭建Remote CUDA开发环境,使用Jetbrains Clion作为Develop IDE。
876 1
Clion配置远程CUDA调试环境