前置任务
- 远程开发板GDB版本与本地电脑GDB版本一致。方法参考:手动升级开发板GDB版本
- CLion成功交叉编译程序,生成二进制文件。方法参考:CLion交叉编译OpenCV
开发环境
- 本地主机:X86的VMware虚拟机,Ubuntu18.04系统
- 远程主机:ARM64的开发板,型号为Toybrick3399 PRO_X,Debian10 系统
- 两者的GDB版本都为9.2,关于如何升级/降级/安装GDB,请参考前面的文章。GDB版本不一致会导致Remote side has terminated connection 错误。
第一步:修改Run/Debug configuration
点击Edit Configuraion.

进入设置以后,点击左上角的加号,选择GDB Remote Debug

下面简单介绍一下各个设置的意思。

- 这个配置的名字,随意填写
- GDB选择multiarch,若没有则先自行安装再重启CLion
- 远程开发板的IP地址与端口号。固定格式为tcp:ip:port number。记住这个端口号
- 编译出来的二进制文件路径
- 远程开发板上保存的二进制文件的路径
- 本机测试程序的路径
一切就绪以后,点击apply!
第二步:将编译完的二进制文件复制到远程开发板目标路径
没错,CLion的官方文档写只能自己手动拷贝。。。这里先介绍使用SSH传输文件的方法:
scp /path/filename username@servername:/path

再介绍另外一种传输方法,在CLion中,File –> Settings –> Deployment,添加一个SFTP。

保存以后退出,在CLion上部菜单,选择Tools –> Deplyoment –> Browse remost host。这样就可以访问远程调试端了,可以直接将文件拖过去。

第三步:远程调试
在远程开发板的二进制文件存放路径,运行:
#8080为第一步中设置的端口号
chmod 777 文件名
gdbserver localhost:8080 ./文件名
在本地CLion中选择刚刚设置的configuration,然后点击debug

两边都显示已连接

选择Debugger –> GDB,可以看到正在将远程文件拷贝到本地

最后,设置断点开始debug吧!
参考
Remote development
https://www.jetbrains.com/help/clion/remote-development.html
利用ssh传输文件
https://www.cnblogs.com/jiangyao/archive/2011/01/26/1945570.html
文章评论