Linux系统—— core 文件
Linux core 文件介绍
1. core文件的简单介绍
    在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。
2. 开启或关闭core文件的生成
    用以下命令来阻止系统生成core文件:
        ulimit -c 0
    下面的命令可以检查生成core文件的选项是否打开:
        ulimit -a
    该命令将显示所有的用户定制,其中选项-a代表“all”。
也可以修改系统文件来调整core选项,在/etc/profile通常会有这样一句话来禁止产生core文件,通常这种设置是合理的:
        # No core files by default
        ulimit -S -c 0 > /dev/null 2>&1
    但是在开发过程中有时为了调试问题,还是需要在特定的用户环境下打开core文件产生的设置;
        在用户的 ~/.bash_profile 里加上 ulimit -c unlimited 来让特定的用户可以产生core文件;
        如果 ulimit -c 0 则也是禁止产生core文件,而 ulimit -c 1024 则限制产生的core文件的大小不能超过1024kb;
3. 设置Core Dump的核心转储文件目录和命名规则
    /proc/sys/kernel/core_uses_pid   可以控制产生的core文件的文件名中是否添加pid作为扩展,如果添加则文件内容为1,否则为0;
    /proc/sys/kernel/core_pattern    可以设置格式化的core文件保存位置或文件名,比如原来文件内容是core-%e;
    可以这样修改:
        echo "/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
    将会控制所产生的core文件会存放到/corefile目录下,产生的文件名为core-命令名-pid-时间戳;
    以下是参数列表:
            %p - insert pid into filename //添加pid
            %u - insert current uid into filename //添加当前uid
            %g - insert current gid into filename //添加当前gid
            %s - insert signal that caused the coredump into the filename  //添加导致产生core的信号
            %t - insert UNIX time that the coredump occurred into filename //添加core文件生成时的unix时间
            %h - insert hostname where the coredump happened into filename //添加主机名
            %e - insert coredumping executable name into filename //添加命令名
4. 使用core文件
    在core文件所在目录下键入:
        gdb -c core
    它会启动GNU的调试器,来调试core文件,并且会显示生成此core文件的程序名,中止此程序的信号等等;
    如果你已经知道是由什么程序生成此core文件的,比如MyServer崩溃了生成core.12345,那么用此指令调试:
        gdb -c core MyServer
    这以下怎么办就该去学习gdb的使用了
5. 一个小方法来测试产生core文件
    直接输入指令:
        kill -s SIGSEGV $$
6. 为何有时程序Down了,却没生成 Core文件。
    Linux下,有一些设置,标明了resources available to the shell and to processes。 可以使用#ulimit -a 来看这些设置。 (ulimit是bash built-in Command)
    以下是常用参数列表:
              -a     All current limits are reported
              -c     The maximum size of core files created
              -d     The maximum size of a process鈥檚 data segment
              -e     The maximum scheduling priority ("nice")
              -f     The maximum size of files written by the shell and its children
              -i     The maximum number of pending signals
              -l     The maximum size that may be locked into memory
              -m     The maximum resident set size (has no effect on Linux)
              -n     The maximum number of open file descriptors (most systems do not allow this value to be set)
              -p     The pipe size in 512-byte blocks (this may not be set)
              -q     The maximum number of bytes in POSIX message queues
              -r     The maximum real-time scheduling priority
              -s     The maximum stack size
              -t     The maximum amount of cpu time in seconds
              -u     The maximum number of processes available to a single user
              -v     The maximum amount of virtual memory available to the shell
              -x     The maximum number of file locks
从这里可以看出,如果 -c是显示:core file size          (blocks, -c)
    如果这个值为0,则无法生成core文件。所以可以使用如下命令来使能 core文件:
        #ulimit -c 1024 
        或者 #ulimit -c unlimited 
    如果程序出错时生成Core 文件,则会显示Segmentation fault (core dumped)。
7. Core Dump的核心转储文件目录和命名规则:
    /proc/sys/kernel/core_uses_pid   可以控制产生的core文件的文件名中是否添加pid作为扩展,如果添加则文件内容为1,否则为0
Linux系统—— core 文件的更多相关文章
- [转载]linux下core文件设置与查看
		转自:https://blog.csdn.net/dingqinghui/article/details/77855330?locationNum=9&fps=1 linux下core文件设置 ... 
- Linux系统中文件定位与查找
		Linux系统中文件查找 关键词 文件查找 | find | locate 本文主要介绍有关文件查找的两个命令——find和locate,以及压缩打包的命令——compress, gzip,bzip2 ... 
- Linux系统下文件压缩与打包命令
		Linux系统下文件压缩与打包命令 常用的压缩文件拓展名 * .Z * .zip * .gz * .bz2 * .xz * .tar * .tar.gz * .tar.bz2 * .tar.xz 压缩 ... 
- Linux系统重要文件(二)
		Linux系统重要文件概述 一系统自动挂载文件 文件路径信息:/etc/fstab文件作用说明:实现存储设备自动挂载 [root@centos7 ~]# cat /etc/fstab # # /etc ... 
- Linux系统重要文件
		Linux系统重要文件介绍与配置 一网卡配置文件 (一)网卡配置文件参数介绍 文件路径信息:/ec/sysconfig/network-scripts/ifcfg-eth0 文件作用说明:配置网卡地址 ... 
- 实验二:Linux系统简单文件操作命令
		項目 内容 这个作业属于哪个课程() 课程链接 这个作业的要求在哪里 实验要求 学号-姓名 17043133-木腾飞 作业学习目标 学习在Linux系统终端下进行命令行操作: 学习掌握常用命令行操作并 ... 
- linux下core文件调试方法
		http://www.cnblogs.com/li-hao/archive/2011/09/25/2190278.html 在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映 ... 
- Linux下core文件产生的一些注意问题
		前面转载了一篇文章关于core文件的产生和调试使用的设置,但在使用有一些需要注意的问题,如 在什么情况 才会正确地产生core文件. 列出一些常见问题: 一,如何使用core文件 1. 使用core文 ... 
- Linux系统编程--文件IO操作
		Linux思想即,Linux系统下一切皆文件. 一.对文件操作的几个函数 1.打开文件open函数 int open(const char *path, int oflags); int open(c ... 
随机推荐
- tomcat日志切割脚本
			tomcat日志每俩小时切割的脚本如下(这是用定时任务来完成的,此方法无需重启tomcat): time=$(date +%H) end_time=`` a=$end_time BF_TIME=$(- ... 
- JAVA / MySql 编程——第六章 Mysql 创建账户的相关命令
			1. 创建普通用户: 语法: CREATE USER `user`@`host` [IDENTIFIED 'password']; //user:用户名,host:主机名,passw ... 
- python__标准库 : 正则表达式(re)
			re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none. re.search 扫描整个字符串并返回第一个成功的匹配. 替换: re.sub(p ... 
- Python学习笔记:logging(日志处理)
			在一个软件中,日志是可以说必不可少的一个组成部分,通常会在定位客户问题或者记录软件使用情况等场景中会用到.logging模板块是Python的一个内置标准库,用于实现对日志的控制输出,对于平常的日志输 ... 
- POJ:3268-Silver Cow Party
			Silver Cow Party Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 26184 Accepted: 11963 De ... 
- WPF系列教程——(一)仿TIM QQ界面 - 简书
			原文:WPF系列教程--(一)仿TIM QQ界面 - 简书 TIM QQ 我们先来看一下TIM QQ长什么样,整体可以将界面分为三个部分 TIM QQ 1. 准备 阅读本文假设你已经有XAML布局的基 ... 
- [bzoj1552][Cerc2007]robotic sort&&[bzoj3506][Cqoi2014]排序机械臂
			非常垃圾的一道平衡树,结果被日了一天.很难受嗷嗷嗷 首先不得不说网上的题解让我这个本来就不熟悉平衡树的彩笔很难受——并不好理解. 还好Sinogi大佬非常的神,一眼就切掉了,而且用更加美妙的解法. 题 ... 
- RSA 加解密算法详解
			RSA 为"非对称加密算法".也就是加密和解密用的密钥不同. (1)乙方生成两把密钥(公钥和私钥).公钥是公开的,任何人都可以获得,私钥则是保密的. (2)甲方获取乙方的公钥,然后 ... 
- Java入门 手把手教你配置环境变量
			很多人觉得配置Java开发的环境变量很麻烦,很容易忘记,时常被它搞得晕头转向.如果出现这样的情况,那么原因只有一个,你不了解为毛需要配置环境变量,不配置环境变量就不能开发了吗? 答案是:NO!,那么下 ... 
- 一个关于pynoi游戏的C语言编程
			"去吧,秦,好好享受这个夜晚,我给你准备了一份礼物,希望你能喜欢."小布莱克眨着眼睛笑道,狡猾的像一头小狐狸. 
