core和vmcore

什么是core

Linux 程序接收到某些signal时退出,生成的退出瞬间的内存镜像。
core 文件可用来进行debugger

如何配置使系统生成core

   ulimit  -c unlimited
   如果想自定义core的大小将unlimited换成数值,比如1024(M)

   kernel.core_pattern = /mnt/core/core-%e-%p-%t.core
   生成core的路径和格式

   kernel.core_pipe_limit = 4
   允许同时生成core的进程数

   kernel.core_uses_pid = 1
   
注意:
如上配置只是临时的,永久生效可以写在/etc/profile & /etc/sysctl.conf & /etc/security/limits.conf中
注意存储core文件的目录有权限

参考https://www.cnblogs.com/xuxm2007/archive/2010/10/22/1858095.html

生成运行程序的core文件
       gcore –a –o xxx.core  <pid>

centos自带工具

分析、生成 c/c++ crash 进程的插件,centos 自带
捕获异常:abrt-hook-ccpp/ abrt-server


   配置文件 :/etc/abrt/abrt.conf  --- core 保存位置、大小、级别等
            /etc/abrt/plugins/CCpp.conf ----core 保存方式、存储大小等
分析异常:abrt-action-analyze-ccpp-local---下载debuginfo包,生成coredump backtrace,                        检查bugzilla  
                     abrt-action-generate-backtrace---分析coredump,保存生成backtrace
参考文档:https://www.mankier.com/package/abrt-addon-ccpp
            https://abrt.readthedocs.io/en/latest/

如何分析core

gdb binary-file xxx.core
    https://blog.csdn.net/Roland_Sun/article/details/42460663

注:
  1) 生成core的二进制文件-g 编译 或 有符号表、maps信息 或 有debug包
    
   http://blog.kankanan.com/article/linux-     4e0b8c038bd5526553bb8c038bd54fe1606f76847a0b5e8f5d296e83.html
  2) 最好在本机或者相同环境上调试


确定崩溃原因
确定堆栈
   bt
查找出错堆栈对应行号
    nm /addr2line/ (gdb) l * addr/ fun_name 
确定异常地址所属
         info proc mappings

vmcore

内核参数配置
临时配置
https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html
内核参数配置---永久生效
grub.cfg & /etc/sysctl.conf
https://learn-linux.readthedocs.io/zh_CN/latest/administration/kernel/sysctl.html

kdump 用来捕获内核异常, 并进行转储
https://www.ibm.com/developerworks/cn/linux/l-cn-kdump1/index.html
http://linuxperf.com/?p=172
使用kexec
加载第二内核, 在异常时进入第二内核
提供kexec-tools 用户态工具 : kdumpctl /crash
配置文件 /etc/kdump.conf
https://linux.die.net/man/5/kdump.conf
mkdumprd
创建 initramfs-xxxx-kdump.img. 将/proc/vmcore 复制到制定位置
https://linux.die.net/man/8/mkdumprd

分析vmcore

安装 对应内核debuginfo包
安装 crash 工具
常用crash 命令:
http://man7.org/linux/man-pages/man8/crash.8.html
分析
https://blog.csdn.net/guowenyan001/article/details/19807555
https://people.redhat.com/pladd/NYRHUG_kdump_and_intro_to_vmcore_analysis.pdf
实例
http://linuxperf.com/?cat=12

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,802评论 1 32
  • 文/tangsl(简书作者) 原文链接:http://www.jianshu.com/p/2b993a4b913e...
    西葫芦炒胖子阅读 9,196评论 0 5
  • 有人不信我会用手机写几千字的文章,那是你还没见过我用手机写小说哪!对我来说,一个合适的场景是:舒服地躺在床上...
    水果蛋蛋阅读 2,656评论 0 0
  • 在我拍过的百余种鸟中,最萌的当属棕头鸦雀和银喉长尾山雀了。 棕头鸦雀体形很小,全长不过12cm,长长的尾巴就占了一...
    梅ym阅读 7,926评论 18 41
  • 龙珊接到谢聪的电话后慌张匆忙的赶到了医院。听到龙珊的声音,“怎么样了?”原本在病房内等着他们苏醒的孙阳看都未看她一...
    木暖霏阅读 1,274评论 0 1