嵌入式软件开发中,最常用的调试方式就是:log复印调试法及在线调试。log复印调试法相关文章:bug解决不了?使用日志法。
开发STM32时,我们有IDE可以用,IDE中早已集成有调试器,配合仿真器使用上去很便捷。而在Linux应用程序的开发中,往往直接在命令行使用gdb进行调试,或则可以使用VSCode+gdb进行调试。
gdb调试相关文章:GDB调试器原先这么简单
而在嵌入式Linux中,我们怎样对开发板上的arm程序进行调试呢?
我们可以使用VSCode+gdb+gdbserver来调试我们arm开发板上的arm程序。下边简单介绍一下使用方式,前提是开发板与PC可以进行无线/有线通讯。
1、准备arm格式的gdb及gdbserver工具
通常交叉编译工具链里都包含有,假如没有则须要自己下载gdb源码进行交叉编译linux在嵌入式开发,gdb下载源码下载链接:
涉及到交叉编译的文章:
实用|一个高性能通信库的简单使用分享
protobuf-c在嵌入式Linux平台的使用实例分享
这儿我使用的是交叉编译工具链里的gdb及gdbserver,如:
2、创建launch.json文件并更改
我们须要创建vscode的launch.json文件并进行一些更改:
其中须要更改"program",这是我们须要调试的程序,即我们交叉编译好的程序。还须要添加如下两个键名对:
"miDebuggerPath:"/opt/rv1126/bin/arm-linux-gnueabihf-gdb"
"miDebuggerServerAddress":"192.168.3.12:9001"
其中,miDebuggerPath表示的是arm格式gdb的路径;miDebuggerServerAddress表示的是我们server端的地址,如:192.168.3.12为开发板的ip,9001为端标语,可自行设置linux在嵌入式开发,其范围为:0~65536红旗linux安装,0~1023的端口通常由系统分配给特定的服务程序。
3、把gdbserver传到开发板上
我们须要交叉编译器路径下的gdbserver传到开发板上,如我这儿放在开发板的/usr/bin路径下:
4、启动gdbserver
我们首先须要启动开发板上的gdbserverwps for linux,pc端就能联接进行调试,格式为:
gdbserver 开发板ip:端口号 要调试的程序
如:
5、启动vscode的gdb进行调试
最后,启动vscode的gdb即可进行调试。如: