segment fault 定位 与 远程 gdb
远程 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: ./hello
Process ./hello created; pid =
Listening on port
6. 在 HOST 平台上执行 $GDB /exports/rfs/hello 进入:
0x0000ffffb7fd2d00 in ?? () from target:/lib/ld-linux-aarch64.so.
(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)
segment fault 定位 与 远程 gdb的更多相关文章
- 【Z】段错误Segment Fault定位,即core dump文件与gdb定位
使用C++开发系统有时会出现段错误,即Segment Fault.此类错误程序直接崩溃,通常没有任何有用信息输出,很难定位bug,因而无从解决问题.今天我们介绍core dump文件,并使用gdb进行 ...
- GDB调试之core文件(如何定位到Segment fault)
core dump又叫核心转储,当程序运行过程中发生异常,程序异常退出时,由操作系统把程序当前的内存状况存储在一个core文件中,叫core dump.(内部实现是:linux系统中内存越界会收到SI ...
- segment fault异常及常见定位手段
问题背景 最近boot中遇到个用户态程序的segment fault异常,除了一句"Segment fault"打印外无其他任何打印.该问题复现概率较低,定位起来比较棘手.我们的b ...
- Segment fault及LINUX core dump详解 (zz)
C 程序在进行中发生segment fault(core dump)错误,通常与内存操作不当有关,主要有以下几种情况: (1)数组越界. (2)修改了只读内存. (3)scanf("%d&q ...
- Segment fault及LINUX core dump详解
源自:http://andyniu.iteye.com/blog/1965571 core dump的概念: A core dump is the recorded state of the work ...
- Linux下如何生成core dump 文件(解决segment fault段错误的问题)
Linux下的C程序常常会因为内存访问等原因造成segment fault(段错误),如果此时core dump 的功能是打开的,在运行我们的可执行程序时就会生成一个名为core的文件,然后我们就可以 ...
- 利用linux信号机制调试段错误(Segment fault)
在实际开发过程中,大家可能会遇到段错误的问题,虽然是个老问题,但是其带来的隐患是极大的,只要出现一次,程序立即崩溃中止.如果程序运行在PC中,segment fault的调试相对比较方便,因为可以通过 ...
- gdbserver移植到DM368板子上的过程 以及segment fault problem
问题描述 我在PC机上安装了gdbserver,但是移植到板子上后却出现了问题.运行不了,显示错误:"segment fault". 决定重新在另一台虚拟机上gdbserver. ...
- 利用linux信号机制调试段错误(Segment fault)【转】
转自:http://blog.csdn.net/ab198604/article/details/6164517 版权声明:本文为博主原创文章,未经博主允许不得转载. 在实际开发过程中,大家可能会遇到 ...
随机推荐
- React-Native基础-安卓篇(二)
前言:这一篇随笔将记录我在React-Native官网文档上学习的基础知识
- java.nio.Buffer 中的 flip()方法
在Java NIO编程中,对缓冲区操作常常需要使用 java.nio.Buffer中的 flip()方法. Buffer 中的 flip() 方法涉及到 Buffer 中的capacity.posi ...
- ionic3中使用docker 完成build代码,更新过程记录。
1.若未安装cordova 需先安装cordova 包: npm install -g cordova 2.安装docker 可查看官方文档进行一步步的安装:https://docs.docker.c ...
- ARM指令adr adrl ldr mov
ADR是一条小范围的地址读取伪指令,它将基于PC的相对偏移的地址值读到目标寄存器中.格式:ADR register,exper. 编译源程序时,汇编器首先计算当前PC值(当前指令位置)到exper的距 ...
- AD中快速按模块摆放器件
AD中快速按模块摆放器件 在PCB布局的过程中,我们需要将元器件按照功能模块进行放置,如果一个一个去寻找则很麻烦,现在介绍一个快捷的方法: 1.首先在原理图中按照模块选中,然后快捷键 T+S跳转到PC ...
- Codeforces 1186F - Vus the Cossack and a Graph 模拟乱搞/欧拉回路
题意:给你一张无向图,要求对这张图进行删边操作,要求删边之后的图的总边数 >= ceil((n + m) / 2), 每个点的度数 >= ceil(deg[i] / 2).(deg[i]是 ...
- jq 常识复记01-- 数组操作
删除数组指定的某个元素 js删除数组中某一项或几项的几种方法 https://www.jb51.net/article/154737.htm 首先可以给JS的数组对象定义一个函数,用于查找指定的元素在 ...
- CNN基础三:预训练模型的微调
上一节中,我们利用了预训练的VGG网络卷积基,来简单的提取了图像的特征,并用这些特征作为输入,训练了一个小分类器. 这种方法好处在于简单粗暴,特征提取部分的卷积基不需要训练.但缺点在于,一是别人的模型 ...
- MQ总结
对于ActiveMQ:JMS可靠消息机制.JMS发布订阅与点对点通讯.ActiveMQ高可用集群解决方案.ActiveMQ补偿与重试策略.ActiveMQ整合SpringBoot Kafka:整合Zo ...
- django 304
pycharm现象: [18/Jul/2017 23:27:26] "GET /static/201408210521231921042235.png HTTP/1.1" 304 ...