一、简介

corefile是Linux下程序崩溃时生成的文件,可以用来分析程序崩溃的原因,因为它内部包含了程序崩溃时的堆栈信息。

二、corefile的设置

默认情况下,程序崩溃是不会生成corefile了,因为被操作系统限制。可以通过命令: ulimit -c 来查看,如果值为0则表示被限制了。

打开的方式有多种,最简单的是: ulimit -c unlimited 其中unlimited表示corefile文件的大小无限制,默认为0,所以不能生成corefile文件,你也可以指定其他的值。

这种设置方式虽然简单,但它却只是跟shell相关的,也就是说,如果我们关闭了当前shell再打开一个,则刚才的设置就失效了,这是很不方便的。

另外一种方式时修改文件:/etc/security/limits.conf。将其中的这一行 #* soft core  取消注释并将最后的0修改为unlimited或者你希望的值。

这个修改重新登录的时候才会生效,当然也有使其立即生效的方法:将ulimit -c unlimited 放入/etc/profile中,然后执行source /etc/profile即可立即生效。

默认corefile是生成在程序的执行目录下或者程序启动调用了chdir之后的目录,那么我们可以通过设置生成corefile的格式来控制它,让其生成在固定的目录下。

在/proc/sys/kernel/core_pattern文件中的内容控制着它的格式。但是这里的设置在重启后会失效,如果想要长期生效,那么久需要修改文件:/etc/sysctl.conf,在其中添加一行:kernel.core_pattern=/home/robin/corefile/%e-%p,这个格式表示将corefile放在/home/robin/corefile目录下,每个corefile的格式为:程序名+进程id。当然修改文件/etc/sysctl.conf是不能立即生效的,如果想要立即生效:sysctl -p /etc/sysctl.conf,即可。

关于格式的的控制有如下几个参数:

%%:相当于%

%p:相当于<pid>

%u:相当于<uid>

%g:相当于<gid>

%s:相当于导致dump的信号的数字

%t:相当于dump的时间

%e:相当于执行文件的名称

%h:相当于hostname

参考:

http://blog.csdn.net/longxj04/article/details/7056853

http://www.unixmen.com/how-to-enable-core-dumps-in-rhel6/

三、corefile的使用

我们费了这么大的力气生成了这个corefile当然不是为了只是看看而已,我们需要从它里面的内容分析出程序崩溃的原因。

这就需要使用到我们的另一个工具:objdump、gdb。

objcopy –only-keep-debug execname debug.symbol
gdb --symbols=debug.symbol –core=corefile
(gdb)bt

这样就能看到程序崩溃时的堆栈了。

corefile的设置与使用的更多相关文章

  1. ubuntu下core file文件生成及调试

    1.简介:corefile 是Linux下程序崩溃时生成的文件,可以用来分析程序崩溃的原因,因为它内部包含了程序崩溃时的堆栈信息. 2.corefile的设置 默认情况下,程序崩溃是不会生成coref ...

  2. 让外部的开发机直接访问Kubernetes群集内的服务!

    让外部的开发机直接访问Kubernetes群集内的服务! 1.场景 容器化+K8s编排已经是现在进行时把网站的多个项目设计为云原生(Cloud Native)或老项改造为云原生可以获得诸多能力例如无云 ...

  3. Linux命令总结大全,包含所有linux命令

    使用说明:此文档包含所有的Linux命令,只有你想不到的没有你看不到的,此文档共计10万余字,有8400多行,预计阅读时间差不多需要3个小时左右,所以要给大家说一说如何阅读此文档 为了方便大家阅读,我 ...

  4. corefile 设置

    程序运行的过程中,可能会因为一些隐藏的bug导致崩溃,为了在出问题时,及时记录所在环境的情况,所以要设置core文件的产生.其实其本质就是把进程的内存保存到文件中去. 1.core文件的生成开关和大小 ...

  5. Core文件作用、设置及用法

    http://blog.csdn.net/lanmolei814/article/details/45201693 ====================================== 1.C ...

  6. linux下生成core dump文件方法及设置

    linux下生成core dump文件方法及设置    from:http://www.cppblog.com/kongque/archive/2011/03/07/141262.html core ...

  7. 设置core环境

    void dummy_function (void){ unsigned char *ptr = 0x00; *ptr = 0x00;} int main (void){ dummy_function ...

  8. 如何设置、查看以及调试core文件

    http://blog.csdn.net/xiaoxiaoniaoer1/article/details/7740820 1.core文件的生成开关和大小限制--------------------- ...

  9. Linux生成core文件、core文件路径设置

    在Linux下产生并调试core文件 先看看我用的是个什么机器: $ uname -aLinux dev 2.4.21-9.30AXsmp #1 SMP Wed May 26 23:37:09 EDT ...

随机推荐

  1. PostgreSQL Type的创建与Type在函数中的使用

    postgres=# create type complex as(postgres(# r double precision,postgres(# i double precisionpostgre ...

  2. JAVA多线程与多进程

    并发与并行是两个既相似而又不相同的概念,但往往容易混为一谈,这两者究竟有什么区别呢?本文通过一个例子让你更好地理解(本文由并发编程网翻译). 现代社会是并行的:多核.网络.云计算.用户负载,并发技术对 ...

  3. AJAX简单的数据增删改与分页应用

    运行截图: PageBar.js: /* * 说明: * 整体思想,1.第一页时不显示:首页,上一页, * 2.最后一页时不显示:下一页,尾页 * 3.中间有 5 页导航, * 若:3.1.(总页数& ...

  4. spark sql cache

    1.几种缓存数据的方法 例如有一张hive表叫做activity 1.CACHE TABLE //缓存全表 sqlContext.sql("CACHE TABLE activity" ...

  5. C#委托实例

    using System; using System.Collections.Generic; using System.Linq; using System.Text;   namespace we ...

  6. paper 35 :交叉验证(CrossValidation)方法思想

    交叉验证(CrossValidation)方法思想简介 以下简称交叉验证(Cross Validation)为CV.CV是用来验证分类器的性能一种统计分析方法,基本思想是把在某种意义下将原始数据(da ...

  7. 《科学》封面:人工智能终于能像人类一样学习 zz

    原文地址:http://tech.sina.com.cn/d/i/2015-12-12/doc-ifxmpnqi6368668.shtml science   Human-level concept ...

  8. css3颜色渐变

    从上到下的线性渐变: #grad {  background: -webkit-linear-gradient(red, blue); /* Safari 5.1 - 6.0 */  backgrou ...

  9. [Ubuntu] Linux下使用google app engine,无法打开https网站的解决方法

    为什么这里写的是 google app engine?原因我就不解释了.步骤如下: 1)安装证书导入工具:$ sudo apt-get install libnss3-tools 2)导入CA.crt ...

  10. Java高效编程之三【类和接口】

    本部分包含的一些指导原则,可以帮助哦我们更好滴利用这些语言元素,以便让设计出来的类更加有用.健壮和灵活. 十二.使类和成员的访问能力最小化 三个关键词访问修饰符:private(私有的=类级别的).未 ...