使用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(上)
|
NoSQL IDE Java
使用CLion调试Redis源码的超详细步骤
因为我本人主要是写Java的,有强烈的IDE依赖症,不喜欢使用文本编辑器或者命令行这样的工具,所以选择使用CLion搭建一个IDE环境来辅助 Redis 源码阅读。
492 1
使用CLion调试Redis源码的超详细步骤
|
编解码 缓存 NoSQL
用Ubuntu18与clion调试FFmpeg
用Ubuntu18与clion调试FFmpeg
253 0
|
弹性计算 并行计算 NoSQL
Clion配置远程CUDA调试环境
在阿里云GPU ECS实例上搭建Remote CUDA开发环境,使用Jetbrains Clion作为Develop IDE。
724 1
Clion配置远程CUDA调试环境
|
Java 开发工具 数据安全/隐私保护
在Clion上调试LeetCode代码
在Clion上调试LeetCode代码
932 0
在Clion上调试LeetCode代码
|
关系型数据库 MySQL 开发工具
Mac下使用Clion调试MySQL版本5.7源码
Mac下使用Clion调试MySQL版本5.7源码
165 0
Mac下使用Clion调试MySQL版本5.7源码
|
关系型数据库 C++ iOS开发
【从入门到放弃-MySQL】CLion调试MySQL8.0源码
前言 想对的MySQL底层实现做一些了解,奈何没有用过C++不知道怎么调试一个大型项目,一日和大神交流时大神扔给我了一份《XCode调试MySQL8秘籍》。于是在几经波折(主要是因为菜)之后终于打开了MySQL的调试大门。
3149 0
|
8月前
|
XML Java 数据格式
Jrebel远程同步
Jrebel远程同步
|
IDE 网络安全 开发工具
在PyCharm中连接云端资源进行代码调试
通过PyCharm ToolKit连接ModelArts,您可在PyCharm中便捷地使用云端计算资源进行代码开发。
442 0
在PyCharm中连接云端资源进行代码调试
|
Ubuntu 网络安全 计算机视觉
树莓派开发笔记(四):更方便的开发,qt远程运行(主机qt开发一键远程运行到目标机上)
树莓派开发笔记(四):更方便的开发,qt远程运行(主机qt开发一键远程运行到目标机上)
树莓派开发笔记(四):更方便的开发,qt远程运行(主机qt开发一键远程运行到目标机上)