我是靠谱客的博主 单薄烤鸡,最近开发中收集的这篇文章主要介绍Ubuntu下“Ctrl+z”强行终止代码后再次运行,发生“段错误 (核心已转储)”1. 问题描述2. 解决方法3. 解释说明参考链接,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 1. 问题描述
  • 2. 解决方法
  • 3. 解释说明
  • 参考链接


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

最后

以上就是单薄烤鸡为你收集整理的Ubuntu下“Ctrl+z”强行终止代码后再次运行,发生“段错误 (核心已转储)”1. 问题描述2. 解决方法3. 解释说明参考链接的全部内容,希望文章能够帮你解决Ubuntu下“Ctrl+z”强行终止代码后再次运行,发生“段错误 (核心已转储)”1. 问题描述2. 解决方法3. 解释说明参考链接所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部