clion+gdbserver远程调试
clion+gdbserver远程调试
因为嵌入式开发板上没有ide,自己又不会在终端中使用gdb调试。不过现在的ide可以gdbserver来远程调试开发板上的程序,我个人很喜欢使用clion,记录一下clion+gdbserver远程调试。
依赖环境
嵌入式开发板:
- gdbserver(这个是必须要安装)
- open-ssh(如果是使用clion的话这个必须要安装,如果用vscode这个也不需要安装)
- rsync(如果单纯只是调试的话,可以不需要,安装了这个可以自动上传可执行程序)
pc:
- clion
- 交叉编译器
- cmake
- docker(docker是用来方便自己在开发板上安装open-ssh的)
注意事项
如果想要调试的时候不出现乱跳以及变量信息的查看需要注意:
- cmakelist中需要添加 add_definitions("-g”) 为了保留调试信息
- cmakelist 关闭编译优化 即将 -O3 优化 替换成 -O0 (使用ide远程调试的时候改好,正式发布的时候再改回来即可)
clion 配置 远程调试环境
- 点击 Run 再点击 Edit Configurations
- 点击 + 新增一个 Remote GDB Server 配置
- 配置相关设置,下面是我自己的配置
说明:
- Target: 构建的目标
- Execute: 执行程序
- Credentials: 与开发板连接的凭证(旁边的设置按钮用来设置ssh连接)
- Upload Execute: 选择上传程序的方式(clion会将pc上编译好的程序上传到开发板,如果开发板上没有rsync 则自己手动上传)
- Upload Path: 上传程序的路径(这里的路径指的是开发板上的路径,如果是自己手动上传,就改成自己手动上传的路径)
- GDB Server args: gdbserver命令的参数(主要 ip(ip不填则是默认开发板ip)+端口号+可执行程序+程序参数)
举例如下所示
192.168.53.53:1234 /root/client /userdata/test_demo/model.bin /userdata/test_demo/image
- 开发板环境变量的设置
有时候可执行程序还链接一些库,如果使用gdbserver调试会出现找不到该库,这个时候可以在高级选项中修改 Environment Variables
点击+新增一个环境变量(多个环境变量路径用:隔开)
举例如下:
/userdata/cpp_test:/userdata/work/lib/:/userdata/opencv/lib/
最后点击OK保存所有的设置。
5. 远程调试
在clion的右上角可以选择远程调试和本地调试(带一个像虫标记的就是刚才配置好的gdbserver调试,如果不确定可以点击 Edit Configurations...来查看具体配置)
选择远程调试 然后点击调试(就是那个像虫一样的按钮)
最后就是享受 IDE调试的愉悦。