linux vmcore 分析,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文件的目录有权限

生成运行程序的core文件

gcore –a –o xxx.core

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值