linux下coredump文件产生及分析

前言

cordump是程序崩溃时产生的包含一些堆栈,寄存器信息的文件。windows下如何捕获并分析已做说明,在此只做linux下的说明

如何产生coredump文件

通过ulimit -c查看coredump文件大小限制,一般为0,表示不产生coredump文件,我们需要使用ulimit -c unlimited解除限制,但当关了终端后又会恢复为0

如何设置永久生效

以下修改只对当前用户永久生效
vim ~/.bashrc
在文件末尾追加
ulimit -c unlimited
保存文件后使其立刻生效
source ~/.bashrc

修改coredump路径及文件名

coredump默认产生在程序执行目录,但是当在程序中修改执行路径后会导致在可执行文件路径找不到
su root
echo /path/to/coredump.%e.%p > /proc/sys/kernel/core_pattern

%p - 插入当前的pid
%u - 插入当前的uid
%g - 插入当前的gid
%s - 插入导致产生core文件的信号
%t - 插入core文件生成时的时间
%h - 插入主机名
%e - 插入程序名

对coredump文件进行分析

通过一段代码来演示如何分析

void gen_coredump()
{
    int *ptr = nullptr;
    *ptr = 0;
}

int main(int argc, char **argv)
{
    gen_coredump();
   
    return 0;
}

g++ main.cc -o main -std=c++11 -O0 -m64
执行./main后会产生一个文件名为coredump.main.4110的coredump文件
使用gdb进行分析
gdb ./main
(gdb) core-file coredump.main.4110
gdb) bt
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值