Linux:Core Dump(核心转储)以及事后调试

Core Dump(核心转储)以及事后调试

Core Dump(核心转储)是什么?

首先解释什么是Core Dump。当一个进程要异常终止时,可以选择把进程的用户空间内存数据全部保存到磁盘上,文件名通常是core,这叫做Core Dump。可以理解为当进程异常退出时,把它最后的样子拍个照片保存到磁盘中,这个照片就叫做core,这个过程叫做Core Dump。

事后调试怎么调试?

进程异常终止通常是因为有Bug,比如非法内存访问导致段错误,事后可以用调试器检查core文件以查清错误原因,这叫做Post-mortem Debug(事后调试)
操作系统是不允许一个进程占用太多的资源的,所以一个进程允许产生多大的core文件取决于进程的Resource Limit(这个信息保存在PCB中)。默认是不允许产生core文件的,因为core文件中可能包含用户密码等敏感信息,不安全,同时也防止万一进程不断发生进程异常从而产生大量的core文件,所以一般core file size的大小都为0。
在这里插入图片描述
在开发调试阶段可以用ulimit命令改变这个限制,允许产生core文件。 首先用ulimit命令改变Shell进程的Resource Limit,允许core文件最大为1024K: $ ulimit -c 1024
在这里插入图片描述
此时当我们运行程序出错时,就会产生一份core文件,然后就可以进行查看该core文件进行事后调试。所以说core文件是支持调试的。

接下来是调试方法(用到调试工具gdb):

运行程序发现出错,同时产生core文件。
在这里插入图片描述
调试该错误的可执行文件,进行core文件的调试。
在这里插入图片描述
关于gdb的安装可以戳我的这篇文章!
https://blog.csdn.net/ETalien_/article/details/86483943
有yum源安装包的可以戳这篇!
https://blog.csdn.net/ETalien_/article/details/86507355

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值