ARM 下core dump 调试

来源:互联网 发布:江西省洪水计算软件 编辑:程序博客网 时间:2024/06/14 07:59
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 程序文件名
原创粉丝点击