方法一、 远程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来请获取调试
方法二 远程gdbserver的动态连接
gdbserver的还支持动态绑定到已经启动的进程
gdbserver :1234 --attach <PID>
打断点开始调试
- 点击小虫子开始调试
- 我们可以看到代码停止到了断点处
- Variables 是可以自己设置的watch
- 和正常调试方式一样啦
用CLion完全的在远程工作
这是一个非常非常爽的操作,以后就可以完全的用IDE来写代码了,虽然使用命令行显得比较专业,但是使用工具可以有效的提高工作效率,何乐而不为呢?
进入 Preferences | Build, Execution, Deployment | Toolchains
设置远程连接信息,CLion会自动监测CMake gcc g++ gdb的信息
进入Preferences | Build, Execution, Deployment | CMake
Toolchain 选择我们刚刚设置的
上面的Automatically reload CMake project on editing 的设置勾上的时候,只要代码有修改就会自动编译
现在已经配置了远程Toolchains工具链并配置了相应的CMake配置文件
上图是自动编译和上传到的目录/tmp/tmp.pIdETgMIBR,然后我们只要设置为自动同步目录就成了,如下图
现在已经设置成了自动同步目录,只需在运行/调试配置切换器中选择正确的CMake配置文件,即可以完全远程的方式构建,运行和调试应用程序和测试。
添加Application来跑我们的程序
远程运行,本地输出结果
- 远程运行,本地自动调试
总结
- 配置CLion中的同步信息:同步到哪台机器的哪个目录。
- 使用 Deployment 让本地和远程可以自动同步和自动下载,手动同步和手动下载代码
- 配置GDB remote Debug设置
- 使用gdbserver来启动程序进行调试
- 使用gdbserver attach依附已经启动的程序进行调试
- 完全在本地进行远程代码调试
其他
- 这种方式是不是非常的优雅,这样我们只要不断的添加工具链(Toolchains)就可以在本地应对数不清的远程环境了。
- 这种方式应该适用于JetBrain全家桶