当前位置: 首页 > news >正文

用 gdbserver 调试 arm-linux 上的 AWTK 应用程序

很多嵌入式 linux 开发者都能熟练的使用 gdb/lldb 调试应用程序,但是还有不少朋友在调试开发板上的程序时,仍然在使用原始的 printf。本文介绍一下使用 gdbserver 通过网络调试开发板上的 AWTK 应用程序的方法,供有需要的朋友参考。

在这里插入图片描述

1. 下载 gdb 源代码

通常工具链里都会带有 gdb,但是没有带 gdbserver,这时候就需要下载 gdb 源代码,并自己编译 gdbserver 了。为了和工具链的版本保持一致,最好下载和工具链版本一致的 gdb 源代码。比如这里我们使用的是 arm-openwrt-linux-gdb 8.0 版本。

arm-openwrt-linux-gdb --versionGNU gdb (GDB) 8.0

那就下载 8.0 版本的 gdb 源代码。

wget https://ftp.gnu.org/gnu/gdb/gdb-8.0.tar.gz
tar xf gdb-8.0.tar.gz

2. 编译 gdbserver

cd gdb-8.0/gdb/gdbserver
./configure --host=arm-openwrt-linux --prefix=$HOME/work/awtk-root/gdbserver
make
make install

生成的 gdbserver 位于:

~/work/awtk-root/gdbserver/bin/gdbserver

将生成的 gdbserver 拷贝到开发板上,并设置成可执行,建议放在 /usr/bin 目录下。

3. 编译 AWTK 应用程序的调试版本

DEBUG=True 表示编译调试版本,TOOLS_PREFIX 为工具链的前缀,请根据实际情况修改。

scons TOOLS_PREFIX='arm-openwrt-linux-' DEBUG=True

生成 release.tar.gz, 将 release.tar.gz 拷贝到开发板上,并解压。

./release.sh 

4. 启动开发板的网络

请根据实际情况修改 IP 地址。我这里的 IP 地址是 192.168.8.161。使用 wifi 也是可以的,只要能和开发板通信就行。

ifconfig eth0 192.168.8.161 netmask 255.255.255.0 up
route add default gw 192.168.8.1 eth0ifconfig
route -n

5. 启动 gdbserver

cd release
./gdbserver 192.168.8.161:7890 bin/demoui

6. 本地调试

  • 启动 gdb
arm-openwrt-linux-gdb bin/demoui
  • 连接 gdbserver
target remote 192.168.8.161:7890
  • 设置断点
b main
  • 运行
c

这时候就可以在本地调试开发板上的 AWTK 应用程序了,调试方法和调试本地应用程序一样。

7. 其它

  • 如果网络比较慢,可以在本地放一个rootfs,并在 gdb 中指定sysroot:
set sysroot /home/meetyoo/work/awtk-root/rootfs/rootfs
  • 如果嫌每次输入同样命令麻烦,可以把初始化命令放到文件中:

gdbinit

set sysroot /home/meetyoo/work/awtk-root/rootfs/rootfsb lcd_mem_set_double_fb_bitmap
b lcd_mem_create_single_fbtarget remote 192.168.8.161:7890

启动 gdb 时指定初始化脚本文件名:

arm-openwrt-linux-gdb bin/demoui -x gdbinit
http://www.lryc.cn/news/509074.html

相关文章:

  • 攻防世界web第一题
  • 轮播图带详情插件,插件
  • gesp(三级)(14)洛谷:B4039:[GESP202409 三级] 回文拼接
  • ISO17025最新认证消息
  • ASP.NET Core Web API 控制器
  • RAID5原理简介和相关问题
  • Axure RP 8安装(内带安装包)
  • stm32定时器输出比较----驱动步进电机
  • 关于鸿蒙架构feature
  • 【递归,搜索与回溯算法 综合练习】深入理解暴搜决策树:递归,搜索与回溯算法综合小专题(一)
  • vue3 如何使用 mounted
  • PostgreSQL JOIN
  • mysql(基础语法)
  • 【论文阅读笔记】Scalable, Detailed and Mask-Free Universal Photometric Stereo
  • 抓取手机HCI日志
  • 【linux】 unshare -user -r /bin/bash命令详解
  • 微软远程桌面APP怎么用
  • Android9.x SurfaceView源码分析
  • MDS-NPV/NPIV
  • 通用人工智能的关键:统一语言描述万物
  • JSON 系列之1:将 JSON 数据存储在 Oracle 数据库中
  • [前端]HTTP库Axios
  • vue3入门教程:reactive函数
  • SDMTSP:黑翅鸢算法(Black-winged kite algorithm,BKA)求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)
  • 叉车作业如何确认安全距离——UWB测距防撞系统的应用
  • 5-Gin 静态文件服务 --[Gin 框架入门精讲与实战案例]
  • 【自动驾驶】3 激光雷达③
  • Vue 3.5 编写 ref 时,自动插入.Value
  • 从0到1实现一个RS蓝图系统-概念提出技术栈选型
  • npm淘宝镜像