嵌入式Linux的GDB调试环境建立

简介: 嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端使用arm-linux-gdb,Target Board端使用gdbserver。这样,应用程序在嵌入式目标系统上运行,而gdb调试在Host端,所以要采用远程调试(remote)的方法。
嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端使用arm-linux-gdb,Target Board端使用gdbserver。这样,应用程序在嵌入式目标系统上运行,而gdb调试在Host端,所以要采用远程调试(remote)的方法。

    一、建立安装gdb组件

    从ftp://ftp.gnu.org/gnu/gdb上下载gdb套件,我下载的是gdb-5.2.1.tar.gz。假定在debug下编译gdb套件,你前面已经设定了TARGET,PREFIX参数。其中TARGET是你的目标板,我的是arm-linux,PREFIX是你要安装的目标文件夹。

$tar xvzf gdb-5.2.1.tar.gz
$mkdir debug/build-gdb
$cd build-gdb
$../gdb-5.2.1/configure --target=$TARGET --prefix=$PREFIX
$make
$make install
然后建立gdbserver。
$mkdir debug/build-gdbserver
$cd build-gdbserver
$chmod +x ../gdb-5.2.1/gdb/gdbserver/configure
$CC=arm-linux-gcc ../gdb-5.2.1/gdb/gdbserver/configure \
>--host=$TARGET --prefix=$TARGET
$make
$make install

  使用arm-linux-strip命令处理一下gdbserver,然后将之复制到你的根文件系统的/usr/bin下,建立ramdisk盘。

    二、调试步骤

1、交叉编译,带参数-g加入调试信息。

  假设要调试的程序为test.c。

#arm-linux-gcc -g test.c -o test

2、在Target Board开启gdbserver

#gdbserver  :2345 test
gdbserver开始监听2345端口(你也可以设其他的值),然后启动test,你会看到“Process test created:pid=157”

3、回到Host端

#arm-linux-gdb test

  最后一行显示:This GDB was configured as “--host=i686-pc-linux-gnu,--target=arm-linux”...
说明此gdb在X86的Host上运行,但是调试目标是ARM代码。

(gdb)target remote :2345

  注意:你的端口号必须与gdbserver开启的端口号一致,这样才能进行通信。

  建立链接后,就可以进行调试了。调试在Host端,跟gdb调试方法相同。注意的是要用“c”来执行命令,不能用“r”。因为程序已经在Target Board上面由gdbserver启动了。结果输出是在Target Board端,用超级终端查看。

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
2月前
|
安全 Linux 网络安全
Linux环境中安装和使用Paramiko
Linux环境中安装和使用Paramiko
131 12
|
2月前
|
Java 关系型数据库 MySQL
Linux环境
Linux环境
37 5
|
2月前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
317 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
27天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
62 3
|
27天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
34 3
|
2月前
|
Ubuntu 应用服务中间件 Linux
Linux下搭建Nginx环境的搭建
Linux下搭建Nginx环境的搭建
68 6
|
1月前
|
Linux UED iOS开发
|
2月前
|
监控 Linux 云计算
Linux操作系统在云计算环境中的实践与优化###
【10月更文挑战第16天】 本文探讨了Linux操作系统在云计算环境中的应用实践,重点分析了其在稳定性、安全性和高效性方面的优势。通过具体案例,阐述了Linux如何支持虚拟化技术、实现资源高效分配以及与其他开源技术的无缝集成。文章还提供了针对Linux系统在云计算中的优化建议,包括内核参数调整、文件系统选择和性能监控工具的应用,旨在帮助读者更好地理解和应用Linux于云计算场景。 ###
48 3
|
2月前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
384 3
|
3月前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
47 5