为基于Eclipse下的嵌入式Linux开发添加调试功能

6 篇文章 0 订阅
5 篇文章 0 订阅

为基于Eclipse下的嵌入式Linux开发添加调试功能

1.需求概述

以前嵌入式Linux应用开发的主要流程是使用Makefile管理、交叉编译器编译编写好的C代码,目前是直接使用Eclipse创建并管理工程,在编译的一瞬间会生成对应的Makefile,调用交叉编译器生成可执行文件。Eclipse只是个空壳,并不具备编译能力,更不知道目标设备是什么架构,他只知道编译时该给编译器传什么正确的参数,所以对应每个工程都有编译器的前缀和位置需要配置好,又因为这些gcc编译器都遵守GNU,所以Eclipse在编译时传的参数对于不同目标架构的编译器仍然有效。但这只实现了编译,调试的话只能通过printf来判断程序执行到了哪里。参考STM32单片机的CubeIDE,在调试时就可以实现断点功能,其实现思路并不是CubeIDE直接通过USB与ST-Link交互,而是CubeIDE启动GDB客户端程序去连接GDB服务端,而这个GDB服务端也就是ST-Link,J-Link同理。所以若要实现对嵌入式Linux的单步调试,就需要在Eclipse运行GDB客户端,板子上运行GDB服务端,实现远程调试。

2.整理步骤

基于刚才提到的几点,对一会需要做的事情作简要总结:

  • 准备好在ARM Linux上运行的GDB服务端程序
  • 修改当前的交叉编译器
  • 在Eclipse中配置好目标调试设备的地址
2.1 准备好在ARM Linux上运行的GDB服务端程序

GDB服务端程序作为调试其它app的工具,在使用时需要知道自身需要监听的端口号、待调试的app,因此,GDB服务端程序需要和app编译时使用到的GCC编译器版本保持一致,避免出现问题。而目前使用的arm-linux-gnueabihf-gcc的版本为2014.11,里面并没有包含目标板上使用的gdbserver程序,这个程序2014.07版本的交叉编译工具链中有提供,所以最好的解决办法就是将当前的编译器版本统一为2014.07。先来把目标板使用的gdbserver程序拷贝到/usr/bin/路径下,这个是在板子上运行的GDB服务端程序。
板子上运行的GDB服务端程序

2.2 修改当前的交叉编译器

直接解压交叉编译器至原路径,也就是/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux

在已打开的Eclipse工程上右键->属性->C/C++ Build->Builder Type修改为internal
在这里插入图片描述

Settings修改当前新的编译器路径
在这里插入图片描述
执行Clean后,重新编译即可

2.3 在Eclipse中配置好目标调试设备的地址

为了方便在Eclipse中与开发板连接,可以安装Remote System Explorer插件,其支持SFTP、ssh等通讯协议。依次点击Help->Eclipse Marketplace,搜索remote安装
在这里插入图片描述
安装后重启Eclipse,依次点击File->New->Other,选择远程连接,配置好IP用户名密码等信息即可
在这里插入图片描述
点击调试虫子按钮旁的倒三角,选择Debug Configuration,在左侧的C/C++ Remote Application下创建新的配置文件,右侧窗格的Main选项卡中配置好远程目标、远程调试路径,Debugger选项卡中配置好gdb客户端程序
在这里插入图片描述
在这里插入图片描述
开始调试即可
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值