【Linux之拿捏信号2】核心转储文件core dump


核心转储文件的概念

Linux系统级别提供了一种能力,在一个进程出现异常的时候,OS可以将该异常进程的核心代码部分进行核心转储,将内存中进程的相关代码数据,全部dump到磁盘中,一般会在当前进程的运行目录下,形成core.pid(核心转储文件)这样的二进制文件。但是这个服务在linux下默认是关闭的,因为core.pid(核心转储文件)很大,程序每运行一次,都会生成一个core文件,所以问题很大。

ulimit命令

ulimit -a命令

功能:显示目前资源限制的设定。

若想要在linux下设置观察到这个文件,我们需要做一些设置,方法如下:

如何打开和关闭核心转储功能?

采用ulimit命令进行设置:当某些程序发生错误时,系统可能会将该程序在内存中的信息写成文件(除错用),这种文件就被称为核心文件(core file)。-c为限制每个核心文件的最大容量。

//linux下初始默认值为0
ulimit -c <core文件上限>  //设定core文件的最大值,单位为区块。
			
ulimit -c 0 //取消core dump

Term和core

功能:Term和core的功能都是终止进程。
区别:Term->终止进程,没有多余动作;core->会先进行核心转储,然后再进行终止进程。

在这里插入图片描述

所以我们向进程发送kill -1 进程pidkill -6 进程pid是有区别的。当我们发送kill -1 进程pid,会直接终止进程,没有多余动作;发送kill -6 进程pid,会在异常错误后面显示(core dumped文件转储)的标志,并会在当前目录下生成核心转储文件。
在这里插入图片描述
在当前目录下生成的core.31574文件就是核心转储文件(很大)
在这里插入图片描述
当我们打开core.31574,发现是二进制文件,那么我们如何查看问题呢?

答案是:不用自己定位问题了,gdb自动定位问题。
(linux下默认是release版本,只有加上-g选项编译文件,才是debug版本。)

gdb 目标可执行文件
core-file core.31574//可以直接帮我们定位到代码的问题之处

验证操作

在这里插入图片描述
运行结果:
注意获取退出码,退出信号,是否有core dump的标记的方法
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_麦子熟了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值