简介:
     在程序开发过程中,我们可以通过assert,log, 单元测试,单步调试这些手段来排除bug,解决异常,提升代码质量。在发布版中,程序被异常终止了,只能通过当时的日志追踪程序当时运行的情景,如果没有core dumps 文件,在查找解决bug的时候,困难提高了几个数量级。
     当程序在运行过程中遇到异常,操作系统为了安全期间,会将异常程序关闭,并生成崩溃文件。崩溃文件一般是程序崩溃地址前的堆栈快照信息。通过崩溃文件运行与之匹配的程序,就可以找到程序异常事故现场,找到相应的代码片段,解决问题。本篇文章教你如何打开core dumps 开关,在程序崩溃时,生成崩溃文件。

Core dumps开关:
     Centos系统core dumps默认 是关闭的,很显然Linux的思维方式就是定制你个人的私有操作系统,如果你对哪里不满意,或者你只需要某些应用或者服务,好的自己去安装,或者自己去打开。而不是霸道的为你做主。安全方面是列外,比如iptables是默认打开,这方面还是可以理解的。
     通过ulimit命令可以方便的查看core dumps文件是否打开:

ulimit -c

如果输出为0,说明core dumps开关未打开。
     打开 生成core dumps 文件开关,执行

ulimit -c ulimited

打开开关,ulimited 的意思是成成dump文件大小无限制,如果想对大小限制,可以换成数字,单位是kb。可是限制大小生成的dump文件是残缺的,用gdb调试可能会失败。所以最好还是开启为ulimited。
     执行命令后,系统生成core dumps的开关是打开了,等待下次系统重启的时候还是会默认为0,如果想以后系统重启,还是可以生成dump 文件,需要修改系统配置文件(/etc/profile):
     如果已经有:

ulimit -c 0 > /dev/null 2>&1

可以修改为下面命令,如果没有可以添加此命令

ulimit -c unlimited >/dev/null 2>&1

linux 几乎所有东西都是通过文件来描述的,ulimit 来设置和查看一些系统配置的命令。通过

ulimit -a

可以查看,设置那些变量, 其中core file size,就是通过-c选项来描述的。/dev/null 你可以理解为黑洞,任何文件,或信息导入它,都会被吞噬。linux 用0来描述标准输入,1来描述标准输出,2来描述标准错误。>为导入符。整个意思就是在执行 ulimit -c命令的时候,无论是输出,还是错误都导入都忽略掉。

Core dumps生成规则:
     如果只打开dump开关,生成的dump文件路径为当前程序崩溃路径,dump文件名称为:core.19021,19021为进程号。如何定制自己想要的文件名和路径:打开文件:/etc/sysctl.conf

添加下面命令:

     kernel.core_uses_pid = 1kernel.cre_pattern = ./core-%e-%s-%p-%tfs.suid_dumpable=2 

     第一条是配置是让生成的dump 文件加上进程号     第二条配置为在程序运行目录生成崩溃文件,其中:     %e 为程序名     %s 为程序崩溃时收到的信号数,对于信号不熟悉的同学可以看这里     %p 为程序运行时进程号     %t 为程序崩溃时时间(不过是秒数,如果想看具体时间,可以写个小程序,读出来)     我自己其实只用到了%e,这个选项,其它选项可以通过其它命令看到。     第三条是设置文件如果设置了+u权限, 也可以生成dump 文件。     在看下面提到的资料,最后一条是要在文件:/etc/sysconfig/init 里追加一条命令,但在Redhat系列操作系统不用加,因为其它系统里在设置ulimit -c 的时候用到了这个环境变量,如果你是其它系统,按照上面的教程不能生成dump文件,你可以考虑设置下这个变量。

     echo “DAEMON_COREFILE_LIMIT=‘unlimited’” >> /etc/sysconfig/init

为了让上面的配置生效,最后需要重新加载配置文件:

sysctl -p

建议:
1、dump 文件大小不要设置限制,虽然生成dump文件会很大,但压缩比是非常高的,压缩后可以很容易copy到本地。
2、如果想重启后不重新设置core dump 开关,需要将命令写在系统配置里。

参考资料:
http://www.cyberciti.biz/tips/linux-core-dumps.html

转载于:https://www.cnblogs.com/fengju/p/6174310.html

Linux core dumps 的生成相关推荐

  1. WebLogic JVM Core dumps文件的生成控制

    一,背景 当我们运行的WebLogic JVM发生Fatal Error时,会造成JVM crash掉,进而造成进程终止.一般来说crash的时间我们是无法估计在什么时候的,它具有很大的偶然性,因此理 ...

  2. linux中dump文件怎么生成,linux下设置core dump文件生成的方法

    /proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作为扩展.文件内容为1,表示添加pid作为扩展名, 生成的core文件格式为      core ...

  3. 设置Linux core file生成路径

    core文件生成路径: 输入可执行文件运行命令的同一路径下. 若系统生成的core文件不带其他任何扩展名称,则全部命名为core.新的core文件生成将覆盖原来的core文件. 1)/proc/sys ...

  4. 运行一段时间报Failed to write core dump. Core dumps have been disabled. To enable core dumping, try ulimit

    部署微服务,20个服务部署到一台腾讯云服务器上. 多个项目运行一段时间均报错: 2019-11-23 16:04:19.418 INFO 19851 --- [nio-8780-exec-4] c.c ...

  5. [Linux]core文件调试方法

    来源: shaovey的专栏 在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行 ...

  6. Linux Core Dump

     1. 前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使得我们 ...

  7. linux core文件默认位置,linux下core文件

    linux下core文件 参考:http://www.cnblogs.com/li-hao/archive/2011/09/25/2190278.html 并整合其他参考资料 在程序不寻常退出时,内核 ...

  8. crt证书linux使用,linux下使用openssl生成https的crt和key证书

    x509证书一般会用到三类文,key,csr,crt Key 是私用密钥openssl格,通常是rsa算法. Csr 是证书请求文件,用于申请证书.在制作csr文件的时,必须使用自己的私钥来签署申,还 ...

  9. Linux core dump的详细介绍及使用

    我们在开发(或使用)一个程序时,最怕的就是程序莫明其妙地当掉.虽然系 统没事,但我们下次仍可能遇到相同的问题.于是这时操作系统就会把程序当掉 时的内存内容 dump 出来,让我们或是debugger ...

最新文章

  1. 关于 IE的文档模式的指定
  2. android简单的自定义按钮,Android 自定义button简单示例
  3. 一道SQL面试题(行列互换)
  4. 谁能答对这道题?如有兴趣,请留下算法,呵呵~
  5. mysql 联合质检_第三次全国国土调查-统一时点更新阶段数据库质检规则业务细则解释(三)...
  6. 使用PyCharm快速安装TensorFlow
  7. 输入三科成绩 C语言,C语言题,对我的程序找错修改。输入10个学生学号,三科成绩,求总成绩和平均分,并按成绩由高到低输出...
  8. 卷积码 c语言编码,基于C语言的卷积编码实现 浅谈卷积和滤波之区别
  9. 安防监控系统的几个基础小知识
  10. 又是一年深秋时--西湖枫叶随拍
  11. 网易云音乐外链(PHP的curl函数)
  12. Zoreto+坚果云+pdf expert(papership) 实现文献管理和批注同步
  13. 死锁简述(死锁产生的四个条件,预防死锁)
  14. “谷歌百度一键搜索” -- 最方便的Chrome搜索插件
  15. 顺丰丰桥接口开发-java(订单取消接口)
  16. 汇编语言开头写C清零是为啥,这个汇编语言代码是什么意思?
  17. 送上人;玉台体;春宫曲;后宫词;近试上张水部;瑶池;夜雨寄北;寄令孤郎中;为
  18. 映客都是互刷礼物吗_映客互刷礼物有什么用_映客守护有什么用
  19. 经纪机构如何应用未来数字员工高效的处理数据
  20. vmware虚拟机镜像瘦身方法

热门文章

  1. docker 空间满数据迁移笔记
  2. 2.Elasticsearch插件推荐及安装
  3. 第二阶段团队进展报告(3)
  4. python基础(2)
  5. java实现邮件定时发送
  6. python实现文件传输_Python实现基于HTTP文件传输实例
  7. Varnish——CDN推送平台(web页面批量清除缓存)
  8. Git commit至Gitee报错‘remote: error: hook declined to update refs/heads/master‘的解决方法
  9. 表格中序号怎计算机课程视频,【答疑】在Excel表格里输入了文字后怎么下拉顺序号啊?如何在表格里添加序号? - 视频教程线上学...
  10. mysql空值判断函数_MySQL中的ifnull()函数判断空值