Ubuntu下“Ctrl+z”强行终止代码后再次运行,发生“段错误 (核心已转储)”



1. 问题描述

在自己服务器上跑深度学习paper附带的源码(代码无问题),之前使用了Ctrl+z强行停止,再次训练时发生**“段错误 (核心已转储)”**问题。



2. 解决方法

在终端输入:ulimit -c命令,查看core file大小的配置情况。

  • 如果输出0,则表示系统关闭了dump core。
  • 在终端输入:ulimit -c unlimited将core文件上限设置为无限制。

注意:上述直接在命令行打开dump core的方法只对当前shell进程有效,如果想一劳永逸,可以在~/.bashrc的最后一行加入:ulimit -c unlimited



3. 解释说明


core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIGSEGV信号,然后就会core dump)。

在程序运行的过程中,有的时候我们会遇到Segment fault(段错误)这样的错误。这种看起来比较困难,因为没有任何的栈、trace信息输出。该种类型的错误往往与指针操作相关。


ulimit -a用来显示当前的各种用户进程限制。
Linux对于每个用户,系统限制其最大进程数,为提高性能,可以根据设备资源情况。
设置个Linux用户的最大进程数,一些需要设置为无限制:
数据段长度:ulimit -d unlimited
最大内存大小:ulimit -m unlimited
堆栈大小:ulimit -s unlimited

我们在用ulimit -c unlimited这个命令的时候主要是为了产生core文件,就是程序运行发行段错误时的文件。


产生**“段错误 (核心已转储)”**的原因还有很多,这只是我遇到的情况,其他情形再次遇到会继续补充。



参考链接

[1] 博客园:ubuntu段错误(核心已转储)
[2] 博客园:ulimit -c unlimited

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值