背景:

ARM Cortext-A53核+Linux 4.1.12,内核空间64位,用户态32位,gdb版本7.10.1

GDB编译:

1)手动下载gdb-7.10.1.tar.gz源码编译

./configure --host=arm-buildroot-linux-gnueabi --target=arm-buildroot-linux-gnueabi CC=/opt/toolchains/crosstools-arm-gcc-5.3-linux-4.1-glibc-2.24-binutils-2.25/usr/bin/arm-buildroot-linux-gnueabi-gcc AR=/opt/toolchains/crosstools-arm-gcc-5.3-linux-4.1-glibc-2.24-binutils-2.25/usr/bin/arm-buildroot-linux-gnueabi-ar --prefix=<output path>
make
make install
标准的三步编译
 
 
目标板内置gdb
 
GDB Server
1.开发板编译
./configure --host=arm-buildroot-linux-gnueabi --target=arm-buildroot-linux-gnueabi --prefix CC=/opt/toolchains/crosstools-arm-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/bin/arm-buildroot-linux-gnueabi-gcc AR=/opt/toolchains/crosstools-arm-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/bin/arm-buildroot-linux-gnueabi-ar
2.主机端(192.168.1.251)
/opt/toolchains/crosstools-arm-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/bin/arm-buildroot-linux-gnueabi-gdb
target remote 192.168.1.108:3325
set sysroot /opt/toolchains/crosstools-arm-gcc-5.3-linux-4.1-glibc-2.22-binutils-2.25/usr/arm-buildroot-linux-gnueabi/sysroot
3.设备端(192.168.1.108)
./gdbserver 192.168.1.251:3325

(gdb) run

Starting program: /usr/local/test

warning: Unable to fetch general register.

PC register is not available

-----ptrace(PTRACE_GETREGSET)失败

(gdb) set libthread-db-search-path
(gdb) set auto-load libthread-db [on|off]
(gdb) info auto-load libthread-db
          No auto-loaded libthread-db.
(gdb) show auto-load libthread-db
          Auto-loading of inferior specific libthread_db is on.

/lib/libthread_db.so.1软链接指向/lib/libthread_db-1.0.so

如果缺少该库,报错如下:

warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.

同时,要保证该库没有被strip过,因为需要nptl_version符号,否则会报错:

Unable to find libthread_db matching inferior's thread library, ...

(gdb) run        
Starting program: /usr/local/test 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/libthread_db.so.1".
Cannot find user-level thread for LWP 130: generic error

嵌入式Linux之gdb配置和使用的更多相关文章

  1. 嵌入式Linux内时区配置

    一般情况下,嵌入式Linux系统的时区,也是国际事件. 但是我们是属于东八区的时区,所以有一些时候要更改一下 TZ 变量可以配置时区,如下

  2. 嵌入式Linux之NFS配置

    NFS(Network File System) 1.RPC和rpcbind RPC(Remote Procedure Call)即远程过程调用,是分布式应用的基础,即允许计算机远程调用网络上其他计算 ...

  3. 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

    深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...

  4. 交叉编译问题记录-嵌入式环境下 GDB 的使用方法

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10693247.html 本文以嵌入式 Linux 环境下的 gdb 使用为例,记录交叉编 ...

  5. 嵌入式Linux设备驱动程序:发现硬件配置

    嵌入式Linux设备驱动程序:发现硬件配置 Embedded Linux device drivers: Discovering the hardware configuration Interfac ...

  6. 嵌入式Linux开发——内容介绍与开发环境的搭建

    嵌入式Linux开发步骤 设计自己的硬件系统 编写Bootloader 裁剪自己的Linux内核 开发移植设备驱动 构建根文件系统 开发应用程序 嵌入式Linux学习要点 熟练使用开发工具和相关指令集 ...

  7. 嵌入式Linux开发系列之一: 走进嵌入式Linux的世界

    转载:http://www.ibm.com/developerworks/cn/linux/l-embed/part1/index.html   随着信息化技术的发展和数字化产品的普及,以计算机技术. ...

  8. 【分享】4412开发板-嵌入式Linux开发须要掌握的基础知识和技能

    本文转自迅为电子论坛:http://www.topeetboard.com 1.Linux 基础 安装Linux操作系统 Linux文件系统 Linux经常使用命令 Linux启动过程具体解释 熟悉L ...

  9. 如何使用eclipse进行嵌入式Linux的开发

    如何使用eclipse进行嵌入式Linux的开发 作者:曾宏安,华清远见嵌入式学院高级讲师. 如何使用eclipse进行嵌入式Linux的开发 习惯了在windows环境下开发的程序员在转到Linux ...

随机推荐

  1. The kth great number

    The kth great number Problem Description Xiao Ming and Xiao Bao are playing a simple Numbers game. I ...

  2. python递归方式和普通方式实现输出和查询斐波那契数列

    ●斐波那契数列 斐波那契数列(Fibonacci sequence),是从1,1开始,后面每一项等于前面两项之和. 如果为了方便可以用递归实现,要是为了性能更好就用循环. ◆递归方式实现生成前30个斐 ...

  3. RabbitMQ交换器Exchange介绍与实践

    RabbitMQ交换器Exchange介绍与实践 RabbitMQ系列文章 RabbitMQ在Ubuntu上的环境搭建 深入了解RabbitMQ工作原理及简单使用 RabbitMQ交换器Exchang ...

  4. mongodb连接警告修复

    问题 Node.js中mongoose模块连接MongoDB数据库时提示(node:12580) DeprecationWarning: current URL string parser is de ...

  5. RSA 非对称加密算法简述

    RSA概述 首先看这个加密算法的命名.很有意思,它其实是三个人的名字.早在1977年由麻省理工学院的三位数学家Rivest.Shamir 和 Adleman一起提出了这个加密算法,并且用他们三个人姓氏 ...

  6. Spring基础04——ApplicationContext

    1.ApplicationContext简述 ApplicationContext代表IOC容器,在SpringIOC容器中读取Bean配置创建Bean实例之前,必须对它进行实例化,只有在容器实例化后 ...

  7. 微服务框架学习二:Http调用

    1. HTTP接口的意义 二进制接口使用的是java/hessian序列化协议,不能很好的与其他语言通信,虽然hessian也是一种跨语言的通用协议,但很多语言没有很好的实现该协议的产品.所以为了能够 ...

  8. mysql基础知识和pymysql

    一.视图 视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的 ...

  9. thinkphp5 select对象怎么转数组?

    DB操作返回是数组.模型直接操作返回是对象 对象类型转换数组打开 database.php 增加或修改参数'resultset_type' => '\think\Collection',即可连贯 ...

  10. Deepin(Ubuntu)安装rpm软件包

    1.首先安装alien和fakeroot这两个软件,alien可以将rpm转换为deb包. 在终端中输入命令 sudo apt-get install alien fakeroot 2.使用alien ...