ubuntu20.4无法生成core文件如何解决

1、查看coredump是否打开

首先进入root模式,查看当前core文件大小的限制

ulimit -c

得到的结果跟对应含义如下:

  • 0 表示关闭,不会生成core文件
  • unlimited 表示core文件的大小无限制

2、修改core文件大小限制

可以使用下面的命令来修改这一值

ulimit -c unlimited

再次使用ulimit -c命令查看可以看到结果是unlimited。

但是这个只针对当前打开的这个连接终端,新开一个终端可以看到又失效了。
在这里插入图片描述

3、设置core存储路径

可以到/etc/sysctl.conf中,在文件末尾添加上core文件的存储路径:

kernel.core_pattern=/corefile/core_%e_%p_%t

其中命名参数含义如下:

  • %e:文件名
  • %p:进程号
  • %t:unix时间

保存之后reboot按理说是可以解决了,但是就恰好上了ubuntu20的core生成机制的当。

这时查看当前core文件的存储路径会发现跟自己保存的不一样。

cat /proc/sys/kernel/core_pattern

ubuntu20的服务apport.service会自动生成崩溃报告,这个服务导致core_pattern不能生效。

4、关闭apport.service服务

这时可以关闭apport.service这个服务

sudo systemctl disable apport.service

如果这个命令无法关闭的话,可以修改/etc/default/apport文件,将enable改成0

/etc/default/apport

5、测试生成core文件

这时可以测试一下能否生成core文件

测试代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    char *ptr = NULL;
    
    strncpy(ptr, "abc", 3);
    return 0;
}

在这里插入图片描述

也可以对core进行调试(gdb)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值