Eclipse-cdt 配合 gdbserver 进行 arm 程序远程调试 上

简介: 做嵌入式Linux开发也不用再羡慕windows程序员VS集成开发环境的强大,我们同样能够搭建出给力的IDE。 今天在这里记录一下我使用Eclipse-cdt,gdb,gdbserver搭建远程arm调试的过程。

做嵌入式Linux开发也不用再羡慕windows程序员VS集成开发环境的强大,我们同样能够搭建出给力的IDE。

今天在这里记录一下我使用Eclipse-cdt,gdb,gdbserver搭建远程arm调试的过程。

首先介绍下,嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端可以理解为本机,Target端为嵌入式设备。
Host端使用arm-linux-gdb,Target 端使用gdbserver。
调试时,应用程序在嵌入式目标系统上通过运行,而gdb调试在Host端。

    1. 编译gdb
      在GNU官网下载最新版GDB ,我这里下载的是7.2版本gdb-7.2.tar.gz
$ tar xvf gdb-7.2.tar.gz
$ cd gdb-7.2
$ ./configure --target=arm-linux --prefix=/home/aliang/arm-gdb
$ make -j2
$ make install

可以通过export命令将/home/aliang/arm-gdb/bin目录加入PATH,使arm-linux-gdb可以直接使用,也可以直接拷贝到/usr/bin 或arm-linux-gcc同目录

    1. 编译gdbserver
$ cd gdb/gdbserver
$ ./configure --host=arm-linux
$ make -j2
这里没有定义安装目录,因为gdbserver是运行在嵌入式设备端的。
make之后,gdbserver程序就在当前目录下,拷贝到tftpd目录后在设备端通过tftp命令下载
  1. 调试程序
    通过加-g参数 交叉编译带调试信息的程序

     

    $ arm-linux-gcc -g ipcam.c -o ipcam

    拷贝到设备端后,使用gdbserver打开程序

    $gdbserver <host-ip>:10000 ipcam

    主机使用arm-linux-gdb调试程序

    $ arm-linux-gdb ipcam

    输入gdb远程调试指令

    (gdb) target remote <target-ip>:10000

    这时,设备端打印

    Remote debugging from host 192.168.1.102

    说明远程调试已经建立起,可以开始在host端调试

  2. gdb指令可真多,我不是牛人,自认没那技术通过指令就能调试出想要的结果,结合eclipse的图形调试界面快速寻找答案才是我想要的。具体设置,请看下篇
相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
目录
相关文章
|
Java Android开发
在Eclipse环境下调试Java程序
在Eclipse环境下调试Java程序
210 1
|
10月前
|
Java Android开发
Eclipse 运行程序
Eclipse 运行程序
100 2
|
Java Android开发
eclipse开发和运行Java程序
eclipse开发和运行Java程序
109 0
|
Linux 编译器 Windows
6818开发板(arm平台)利用SecureCRT连接主机并运行程序(99乘法表)
6818开发板(arm平台)利用SecureCRT连接主机并运行程序(99乘法表)
781 0
|
芯片 内存技术
基于ARM Cortex-M0+内核的bootloader程序升级原理及代码解析
基于ARM Cortex-M0+内核的bootloader程序升级原理及代码解析
|
Java 程序员 Android开发
Eclipse 答疑:为什么在 Eclipse 中,运行本程序却是另外一个程序的结果?
Eclipse 答疑:为什么在 Eclipse 中,运行本程序却是另外一个程序的结果?
428 0
Eclipse 答疑:为什么在 Eclipse 中,运行本程序却是另外一个程序的结果?
|
Android开发
错误: 程序包org.eclipse.swt.graphics不存在/swt.jar下载方法
错误: 程序包org.eclipse.swt.graphics不存在/swt.jar下载方法
179 0
|
Java Android开发 C语言
Java——在Eclipse集成开发环境下,创建并运行一个Java程序(hello world!!!)
Java——在Eclipse集成开发环境下,创建并运行一个Java程序(hello world!!!)
Java——在Eclipse集成开发环境下,创建并运行一个Java程序(hello world!!!)
|
Java Android开发
编写Java程序,使用 Java 的 I/O 流将 H:\eclipse.zip 文件拷贝至 E 盘下,重新命名为 eclipse 安装 .zip。
编写Java程序,使用 Java 的 I/O 流将 H:\eclipse.zip 文件拷贝至 E 盘下,重新命名为 eclipse 安装 .zip。
216 0
编写Java程序,使用 Java 的 I/O 流将 H:\eclipse.zip 文件拷贝至 E 盘下,重新命名为 eclipse 安装 .zip。
|
Java 应用服务中间件 Maven
Eclipse 部署应用程序到阿里云 EDAS
在之前的一篇文章中,我们介绍了 如何将一个本地的 Java 应用程序直接部署到阿里云 ECS ,有不少读者反馈,如果目前已经在使用阿里云 EDAS 了,那该如何配合这个插件部署应用呢?在本文中,我们来介绍 部署 Java 应用程序到阿里云 EDAS。
3986 0

推荐镜像

更多