GDB core dump分析

coredump是记录进程内存信息和寄存器状态的文件,可用于故障排查。通过gdb可以对活着的进程生成coredump,系统崩溃时可通过设置core_pattern和ulimit-c自动创建。在Ubuntu中,调整core_pattern和ulimit-c参数可以控制coredump的生成。分析coredump文件通常借助gdb进行。
摘要由CSDN通过智能技术生成

基本知识

Linux core dump:一般称之为核心转储、内核转储,我们统称为转储文件。是某个时刻某个进程的内存信息映射,即包含了生成转储文件时该进程的整个内存信息以及寄存器等信息。转储文件可以是某个进程的,也可以是整个系统的。可以是进程活着的时候生成的,也可以是进程或者系统崩溃的时候自动生成的。

为活着的进程创建core dump文件一般可以通过gdb来生成,使用gdb把进程attach进来以后,执行generate-core-file或者gcore命令来生成core dump文件。

我们更多时候是对崩溃产生的core dump文件进行分析。
如何让程序崩溃的时候自动生成core dump?
第一种情况
比如Ubuntu 20.04
cat /proc/sys/kernel/core_pattern
ulimit -c
在这里插入图片描述
第二种情况
比如Ubuntu 18.04
ulimit -c
cat /proc/sys/kernel/core_pattern
在这里插入图片描述
%e-%p-%t: 可执行文件名-进程id-时间
参考https://zhuanlan.zhihu.com/p/205585710

ulimit -c unlimited
echo -e "%e-%p-%t" > /proc/sys/kernel/core_pattern

示例代码

https://github.com/SimpleSoft-2020/gdbdebug/coredump1-section

转储运行的进程

在这里插入图片描述

转储崩溃的进程

在这里插入图片描述
gdb 可执行文件 内核转储文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值