1.下载gdb源代码

http://ftp.gnu.org/gnu/gdb/

2.编译

解压#tar zxvf gdb-7.9.1.tar.gz,cd到解压的目录中。

2.1编译arm-linux-gdb

arm-linux-gdb运行在PC(服务器)上的程序,用于调试的部分

配置参数,--target:目标平台,--prefix:gdb安装的路径;编译,安装

#./configure --target=arm-linux --prefix=/usr/local/arm-gdb

#make -j8

#make install

在指定的路径下生成bin include lib share四个目录,bin下的arm-linux-gdb就是需要的程序。

2.2编译gdbserver

#cd gdb/gdbserver

#./configure --target=arm-linux --host=arm-linux

#make -j8 CC=/opt/hisi-linux/x86-arm/arm-hisiv500-linux/bin/arm-hisiv500-linux-uclibcgnueabi-gcc

编译会报错,主要信息如下:

linux-low.c:612:46: error: ‘ADDR_NO_RANDOMIZE’ undeclared (first use in this function)
if (errno == 0 && !(personality_orig & ADDR_NO_RANDOMIZE))
^
linux-low.c:612:46: note: each undeclared identifier is reported only once for each function it appears in
linux-arm-low.c:129:21: fatal error: sys/reg.h:没有那个文件或目录
#include <sys/reg.h>

修改一下config.h文件,注释掉如下两行

#define HAVE_PERSONALITY 1
#define HAVE_SYS_REG_H 1

然后再次编译,会在当前路径下生成gdbsever,gdbsever就是需要运行在目标机上的程序。将gdbserver拷贝到目标机上。

3.gdb调试

被调试的程序编译时需要加上-g选项,使生成的程序中带上调试信息。编译完成的程序也不能用strip剥去调试信息。

在板子端运行gdbserver

#./gdbserver 10.1.65.142:9990 main

此处ip,port是调试主机的,main是程序名,注意的是main需要在主机端有一份一样的拷贝。arm运行成功,会打印出如下信息:

Process main created; pid = 75
Listening on port 9990

在主机端运行arm-linux-gdb

#./arm-linux-gdb main

#target remote 10.7.162.197:9990\r  //远程连接arm,进行调试

使用set solib-search-path ~/data/nfs/solib/设置动态库路径

gdb调试嵌入式环境搭建的更多相关文章

  1. 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建、调试输出和建立时间系统

    我是卓波,我是一名嵌入式工程师,我万万没想到我会在这里跟大家吹牛皮. 嵌入式框架Zorb Framework搭建过程 嵌入式框架Zorb Framework搭建一:嵌入式环境搭建.调试输出和建立时间系 ...

  2. 嵌入式环境搭建之NFS

    嵌入式环境搭建之NFS Author:tiger-johnTime:2013-08-04mail:jibo.tiger@gmail.comBlog:http://blog.csdn.net/tiger ...

  3. vscode调试golang环境搭建及配置

    准备VSCode 在官网下载最新版的VSCode: 安装Golang插件 打开扩展面板 VSCode->查看->扩展 找到Go插件 在搜索框里输入Go, 找到第二行写有 Rich Go l ...

  4. Tomcat7调试运行环境搭建与源代码分析入门

    1. 需要准备好下面这些工具 JDK 1.6+ Maven 2或3 TortoiseSVN 1.7+ (从1.7开始”.svn”目录集中放在一处了,不再每个目录下都放一份) Eclipse 3.5+ ...

  5. centos7嵌入式环境搭建

    1. 在网上搜索下载交叉编译器arm-linux-gcc文件,我下载的是:arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 ...

  6. 逻辑性最强的React Native环境搭建与调试

    React Native(以下简称RN),已经“火”了好一段时间了,网上的资料相对也很丰富,只是一直迟迟没有发布1.0,不过出身豪门(Facebook)的RN和国内顶级互联网公司对于RN的实践与应用, ...

  7. Linux嵌入式GDB调试环境搭建

    ======================= 我的环境 ==========================PC 端: CPU:x86_64, 系统:Ubuntu,IP:172.16.2.212开发 ...

  8. win10下搭建jz2440v3(arm s3c2440)开发及gdb调试环境【转】

    本文转载自:https://blog.csdn.net/newjay03/article/details/72835758 本来打算完全在Ubuntu下开发的,但是水平有限,没有在Ubuntu下找到合 ...

  9. Eclipse + CDT + YAGARTO + J-Link,STM32开源开发环境搭建与调试

    Eclipse+CDT+YAGARTO+J-Li:开源开发环境搭建与调试:作者:Chongqing:邮箱:ycq.no1@163.com:文档版本:V1.0:发布日期:2014-08-04:前言:此文 ...

随机推荐

  1. 『Python CoolBook』Cython

    github地址 使用Cython导入库的话,需要一下几个文件: .c:C函数源码 .h:C函数头 .pxd:Cython函数头 .pyx:包装函数 setup.py:python 本节示例.c和.h ...

  2. 『TensorFlow』张量拼接_调整维度_切片

    1.tf.concat tf.concat的作用主要是将向量按指定维连起来,其余维度不变:而1.0版本以后,函数的用法变成: t1 = [[1, 2, 3], [4, 5, 6]] t2 = [[7, ...

  3. MySQL三层循环

    begindeclare i int;  #定义i变量declare j int;  #定义j变量declare k int;  #定义k变量set i=1;set j=1;set k=1;while ...

  4. 批量压缩 css js 文件 包含多个文件 自动识别

    注意事项  css 注释压缩不会造成影响      因为是块注释     当然也可以选择去注释压缩 js 带注释压缩  要注意注意 注意  //行注释会造成 压缩后的代码在一行 导致注释后的代码都失效 ...

  5. 在 .NET项目中使用 Redis(2018.10.16)

    1. 打开NuGet管理器搜索redis,安装:“StackExchange.Redis” 2. 配置 Web.config 文件 <connectionStrings> <add ...

  6. web前端性能优化总结一

    转自:http://www.2cto.com/kf/201604/498725.html 网站的划分一般为二:前端和后台.我们可以理解成后台是用来实现网站的功能的,比如:实现用户注册,用户能够为文章发 ...

  7. 微信小程序Promise对象

    Promise 对象 Promise 的含义 基本用法 Promise.prototype.then() Promise.prototype.catch() Promise.prototype.fin ...

  8. linux软件管理 软件安装

    软件包分类 1) 源代码包   脚本安装包 2) 二进制包   (RPM包,系统默认包) 源码包编译后形成二进制包 JDK的安装 下载jdk的文件解压 tar -zxvf jdk-8u144-linu ...

  9. Vertical-align + 表单

    Vertical-align 垂直对齐方式 定义行内元素的基线相对于该元素所在的基线的垂直对齐. inline inline-clock img图片标签具有,块级元素没有. vertical-alig ...

  10. python读取与写入csv,txt格式文件

    python读取与写入csv,txt格式文件 在数据分析中经常需要从csv格式的文件中存取数据以及将数据写书到csv文件中.将csv文件中的数据直接读取为dict类型和DataFrame是非常方便也很 ...