Linux core dumps 的生成
在程序开发过程中,我们可以通过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 的生成相关推荐
- WebLogic JVM Core dumps文件的生成控制
一,背景 当我们运行的WebLogic JVM发生Fatal Error时,会造成JVM crash掉,进而造成进程终止.一般来说crash的时间我们是无法估计在什么时候的,它具有很大的偶然性,因此理 ...
- linux中dump文件怎么生成,linux下设置core dump文件生成的方法
/proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作为扩展.文件内容为1,表示添加pid作为扩展名, 生成的core文件格式为 core ...
- 设置Linux core file生成路径
core文件生成路径: 输入可执行文件运行命令的同一路径下. 若系统生成的core文件不带其他任何扩展名称,则全部命名为core.新的core文件生成将覆盖原来的core文件. 1)/proc/sys ...
- 运行一段时间报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 ...
- [Linux]core文件调试方法
来源: shaovey的专栏 在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息).使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行 ...
- Linux Core Dump
1. 前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件->行, 而是没有任何信息, 使得我们 ...
- linux core文件默认位置,linux下core文件
linux下core文件 参考:http://www.cnblogs.com/li-hao/archive/2011/09/25/2190278.html 并整合其他参考资料 在程序不寻常退出时,内核 ...
- crt证书linux使用,linux下使用openssl生成https的crt和key证书
x509证书一般会用到三类文,key,csr,crt Key 是私用密钥openssl格,通常是rsa算法. Csr 是证书请求文件,用于申请证书.在制作csr文件的时,必须使用自己的私钥来签署申,还 ...
- Linux core dump的详细介绍及使用
我们在开发(或使用)一个程序时,最怕的就是程序莫明其妙地当掉.虽然系 统没事,但我们下次仍可能遇到相同的问题.于是这时操作系统就会把程序当掉 时的内存内容 dump 出来,让我们或是debugger ...
最新文章
- 关于 IE的文档模式的指定
- android简单的自定义按钮,Android 自定义button简单示例
- 一道SQL面试题(行列互换)
- 谁能答对这道题?如有兴趣,请留下算法,呵呵~
- mysql 联合质检_第三次全国国土调查-统一时点更新阶段数据库质检规则业务细则解释(三)...
- 使用PyCharm快速安装TensorFlow
- 输入三科成绩 C语言,C语言题,对我的程序找错修改。输入10个学生学号,三科成绩,求总成绩和平均分,并按成绩由高到低输出...
- 卷积码 c语言编码,基于C语言的卷积编码实现 浅谈卷积和滤波之区别
- 安防监控系统的几个基础小知识
- 又是一年深秋时--西湖枫叶随拍
- 网易云音乐外链(PHP的curl函数)
- Zoreto+坚果云+pdf expert(papership) 实现文献管理和批注同步
- 死锁简述(死锁产生的四个条件,预防死锁)
- “谷歌百度一键搜索” -- 最方便的Chrome搜索插件
- 顺丰丰桥接口开发-java(订单取消接口)
- 汇编语言开头写C清零是为啥,这个汇编语言代码是什么意思?
- 送上人;玉台体;春宫曲;后宫词;近试上张水部;瑶池;夜雨寄北;寄令孤郎中;为
- 映客都是互刷礼物吗_映客互刷礼物有什么用_映客守护有什么用
- 经纪机构如何应用未来数字员工高效的处理数据
- vmware虚拟机镜像瘦身方法
热门文章
- docker 空间满数据迁移笔记
- 2.Elasticsearch插件推荐及安装
- 第二阶段团队进展报告(3)
- python基础(2)
- java实现邮件定时发送
- python实现文件传输_Python实现基于HTTP文件传输实例
- Varnish——CDN推送平台(web页面批量清除缓存)
- Git commit至Gitee报错‘remote: error: hook declined to update refs/heads/master‘的解决方法
- 表格中序号怎计算机课程视频,【答疑】在Excel表格里输入了文字后怎么下拉顺序号啊?如何在表格里添加序号? - 视频教程线上学...
- mysql空值判断函数_MySQL中的ifnull()函数判断空值