远程 GDB

首先 ,Target 为 ARM开发板 (IP =  192.168.1.200),HOST 为 Ubuntu 14.04 虚拟机 (IP = 192.168.1.4)

1. 下载  gdb源码  http://ftp.gnu.org/gnu/gdb/

2. 解压后利用交叉编译工具链 ,对 gdb 源码交叉编译。i   ./configure --host=aarch64-poky-linux --prefix=/home/install   ii make     iii  make install

3.拷贝 /home/install 下编译产物到 开发板的根文件目录/usr/下 ,我的是 /exports/rfs/usr/

4. 交叉编译 应用程序  hello.c   $CC -g -o hello  hello.c   拷贝hello 到 /export/rfs/下

5. 给开发板上电 ,进入控制台,执行  , 其中  192.168.1.4:1234 为 Host IP 地址  : port 口

root@mint:/# gdbserver 192.168.1.4:1234 ./helloProcess ./hello created; pid = 2267Listening on port123

6. 在 HOST 平台上执行  $GDB /exports/rfs/hello  进入:

0x0000ffffb7fd2d00 in ?? () from target:/lib/ld-linux-aarch64.so.1(gdb)

输入 (gdb) target remote 192.168.1.200:1234  (192.168.1.200:1234 为TARGET IP 地址 和相同的port口)

7. 在 main 入口处打断点   (gdb)break main

8. 开始 debug (gdb)continue

至此完成 远程 调试 开发板 。

segment fault 定位

运行应用程序的时候,遇到最多的问题就属  segment fault 了,下面介绍如何利用 core 文件 定位 segment fault 。

1. 设置 core dump 的路径在 /tmp 目录下 文件名为  core+ 程序名   : echo "/tmp/core-%e-%p" > /proc/sys/kernel/core_pattern

2. 设置  core 文件的大小限制  ulimit -c unlimited

3. 运行 出错的应用程序  ./ xxxxx

4. 报出segment fault 后就可以在  /tmp/下查看到   core-xxxxx-xxx 文件

5. 把core 文件拷贝出来放在 根目录下 /

6. 在 PC 上 利用  $GDB  /exports/rfs/xxxxx  core-xxxxx-xxx 就可以 显示出错代码的位置了。

$(GDB) 为 (交叉编译 gdb)

arm-linux-ld segment fault,segment fault 定位 与 远程 gdb相关推荐

  1. Linux内存page,【原创】(十四)Linux内存管理之page fault处理

    背景 Read the fucking source code! --By 鲁迅 A picture is worth a thousand words. --By 高尔基 说明: Kernel版本: ...

  2. ARM非对齐访问和Alignment Fault

    转载自ARM非对齐访问和Alignment Fault - 者旨於陽 - 博客园 (cnblogs.com) 1.指令对齐 A64指令必须word对齐.尝试在非对齐地址取值会触发PC alignmen ...

  3. linux那些事之page fault(AMD64架构)(user space)(2)

    do_user_addr_fault 用户空间地址处理是page fault主要处理流程,x86 64位系统主要是do_user_addr_fault()函数 该处理部分是x86架构特有部分 即与架构 ...

  4. arm linux kernel 从入口到start_kernel 的代码分析

    Linux系统启动过程分析(主要是加载内核前的动作) 经过对Linux系统有了一定了解和熟悉后,想对其更深层次的东西做进一步探究.这当中就包括系统的启动流程.文件系统的组成结构.基于动态库和静态库的程 ...

  5. ARM Linux 内核 panic 之cache 一致性 ——cci-400 cache一致互联

    ARM Linux 内核 panic 之cache 一致性 --cci-400 cache一致互联 CCI-400 集合了互联和一致性功能,有 2 个 ACE slave 接口和 3 个 ACE-Li ...

  6. linux运行欧陆风云,Arm linux启动分析(1)

    下周准备做linux启动的技术讲座,在这里我慢慢整理下自己的材料,这次我写的是Image的启动过程,也即使zImage解压缩结束后的启动代码,这时候的代码开始地址仍然是0x30008000,下面我结合 ...

  7. arm linux 内核崩溃,用sysrq-trigger实现ARM Linux一键内核崩溃、一键关机、一键dump信息等...

    原创 宋宝华 Linux阅码场 2018-01-12 sysrq有多种功能,对于ARM Linux这种嵌入式没键盘的系统来说,也可以通过/proc/sysrq-trigger来进行操作. 实验平台:Q ...

  8. arm linux死机不是崩溃,用sysrq-trigger实现ARM Linux一键内核崩溃、一键关机、一键dump信息等...

    sysrq有多种功能,对于ARM Linux这种嵌入式没键盘的系统来说,也可以通过/proc/sysrq-trigger来进行操作. 实验平台:QEMU模拟的ARM Linux 内核版本: # una ...

  9. ARM linux的启动部分源代码简略分析

    ARM linux的启动部分源代码简略分析 以友善之臂的mini2440开发板为平台,以较新的内核linux-2.6.32.7版本为例,仅作说明之用. 当内核映像被加载到RAM之后,Bootloade ...

最新文章

  1. Chapter 3、Java语法基础(二)----Java基本数据类型、变量与常量 (20th,Feb)
  2. [转]MVC实用架构设计(三)——EF-Code First(3):使用T4模板生成相似代码
  3. 多个Series合并成Dataframe,index不完全匹配怎么处理
  4. 基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(三)
  5. java mesos kubernete_Fabric8操作Kubernetes(一)
  6. submodule切换分支_git子模块分支会随主项目的分支切换吗?
  7. VxWorks下Shell调试总结
  8. php get为空,php – $_GET在url有变量时为空
  9. alarm项目bug
  10. SQL中过滤条件放在on和where中的区别
  11. iis ajax访问html,为什么Ajax脚本不在IIS 7.5 Win 2008 R2服务器上运行?
  12. 机器学习7/100天-K近邻算法
  13. bootstrap 黑边框表格样式_bootstrap3.0教程之多种表格效果(条纹状表格、条纹状表格、鼠标悬停等)...
  14. 聚溶众星CEO朱纯仪:MCN一年营收2.5亿,带货才是直播的未来
  15. 实现导航栏的几种方式
  16. 传智java完整教学视频
  17. python 子域名爆破工具
  18. 分享塑胶模具设计思路与流程,建议收藏!
  19. 腾讯云tca认证题库
  20. java.net.UnknownHostException: mybatis-plus

热门文章

  1. 投票源码程序_基于用户投票的排名算法
  2. [SoapUI] 在SoapUI中通过Groovy脚本执行window命令杀掉进程
  3. 《DSP using MATLAB》示例Example7.10
  4. MongoDB 核心将支持全文搜索功能 (2.3.2)
  5. eclipse 版本理解
  6. Flutter 从配制开发环境再到开发第一个应用
  7. java基础集合操作工具类Collections简述(java集合四)
  8. 99乘法表(java版)
  9. loj#2542. 「PKUWC2018」随机游走(MinMax容斥 期望dp)
  10. 微信小程序 - 展开收缩列表