ARM 下core dump 调试

1、何为core dump
当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump

1、core dump 产生的原因
  • 内存访问越界 (数组越界、字符串无\n结束符、字符串读写越界)
  • 多线程程序中使用了线程不安全的函数,如不可重入函数
  • 多线程读写的数据未加锁保护(临界区资源需要互斥访问)
  • 非法指针(如空指针异常或者非法地址访问)
  • 堆栈溢出

2、busybox 默认情况下,ulimit 是隐藏的, 开启使用如下命令
ln -s /bin/busybox /bin/ulimit
ulimit -c unlimited

3、修改core dump 保持位置, 由于嵌入式系统Flash 空间有限, 可以将位置修改指向SD 卡, 或者NFS 目录
echo /mnt/mmcblk0p1/%e.%p.%s.%t.core > /proc/sys/kernel/core_pattern
通配符解释:
  • %% 单个%字符
  • %p 所dump进程的进程ID
  • %u 所dump进程的实际用户ID
  • %g 所dump进程的实际组ID
  • %s 导致本次core dump的信号
  • %t core dump的时间 (由1970年1月1日计起的秒数)
  • %h 主机名
  • %e 程序文件名
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值