1)core文件简介
core文件其实就是内存的映像,当程序崩溃时,存储内存的相应信息,主用用于对程序进行调试。当程序崩溃时便会产生core文件,其实准确的应该说是core dump 文件,默认生成位置与可执行程序位于同一目录下,文件名为core.***,其中***是某一数字。
2)开启或关闭core文件的生成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
查看core文件生成功能是否打开,如下若是0,则表示没有打开。
[root@localhost ~]# ulimit -c
0
 
临时设置(如下设置2G,单位为kbyte)
如果生成的信息超过此大小,将会被裁剪,最终生成一个不完整的core文件。在调试此core文 件的时候,gdb会提示错误。
[root@localhost ~]# ulimit -c 4194304
 
永久设置
[root@localhost ~]# echo " * soft core 4194304" >> /etc/security/limits.conf
[root@localhost ~]# echo " * hard core 4194304" >> /etc/security/limits.conf
 
[root@localhost ~]# ulimit -a
core file size          (blocks, -c) 4194304
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15189
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 102400
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
 
ulimit -c unlimited,则表示core文件的大小不受限制
[root@localhost ~]# ulimit -c unlimited

3)core文件的使用

1
2
3
4
5
6
在core文件所在目录下键入:
[root@localhost ~]# gdb -c core   (-c指定core文件)
它会启动GNU的调试器,来调试core文件,并且会显示生成此core文件的程序名,中止此程序的信号等等
 
如果你已经知道是由什么程序生成此core文件的,比如MyServer崩溃了生成core.12345,那么用此指令调试:
[root@localhost ~]# gdb -c core MyServer

4)产生core文件的测试

1
2
3
4
5
6
7
8
9
10
11
直接输入指令:
[root@localhost ~]# kill -s SIGSEGV $$
 
扩展:
ulimint -a 用来显示当前的各种用户进程限制
 
Linux对于每个用户,系统限制其最大进程数,为提高性能,可以根据设备资源情况,
设置个Linux用户的最大进程数,一些需要设置为无限制:
数据段长度:ulimit -d unlimited
最大内存大小:ulimit -m unlimited
堆栈大小:ulimit -s unlimited

5)core文件的名称和生成路径

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
core文件生成路径:
输入可执行文件运行命令的同一路径下。
 
若系统生成的core文件不带其它任何扩展名称,则全部命名为core。新的core文件生成将覆盖原来的core文件。
 
1)/proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作为扩展。文件内容为1,表示添加pid作为扩展名,
生成的core文件格式为core.xxxx;为0则表示生成的core文件同一命名为core。
可通过以下命令修改此文件:
# echo "1" > /proc/sys/kernel/core_uses_pid
 
2)proc/sys/kernel/core_pattern可以控制core文件保存位置和文件名格式。
可通过以下命令修改此文件,可以将core文件统一生成到/corefile目录下,产生的文件名为core-命令名-pid-时间戳
# echo "/home/corefiles/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
 
以下是参数列表:
    %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 添加命令名
 
3) 修改core文件目录权限
#chmod 777 /home/corefiles
 

linux下core 相关设置的更多相关文章

  1. [转载]linux下core文件设置与查看

    转自:https://blog.csdn.net/dingqinghui/article/details/77855330?locationNum=9&fps=1 linux下core文件设置 ...

  2. linux下core文件设置(转)

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

  3. 20145234黄斐《信息安全系统设计基础》第八周(Linux下vim相关命令)

    Linux下vim相关命令 在编辑程序时经常使用vim,所以记住一些常用的指令还是很有必要的 文件命令 vim file 打开单个文件vim file vim file1 file2 file3 .. ...

  4. Linux下环境变量设置 (转)

    Linux下环境变量设置 1.在Windows 系统下,很多软件安装都需要配置环境变量,比如 安装 jdk ,如果不配置环境变量,在非软件安装的目录下运行javac 命令,将会报告找不到文件,类似的错 ...

  5. MongoDB在Linux下常用优化设置

    MongoDB在Linux下常用优化设置 以下是一些MongoDB推荐的常用优化设置.在生产环境下选取合适的参数值,例如预读值和默认文件描述符数目等,会对系统性能有很大的影响. 1.关闭数据库文件的 ...

  6. Linux下环境变量设置技巧

    Linux下环境变量设置技巧,不用/etc/profile而是在/etc/profile.d目录下新建特定的shell文件来设置 区别: 1.两个文件都是设置环境变量文件的,/etc/profile是 ...

  7. Linux 下用 crontab 设置定时执行python 程序

    Linux 下用 crontab 设置定时执行python 程序 方法/步骤   1,先大概了解crontab,/etc/crontab 就是crontab 的配置文件. crontab命令详解可以查 ...

  8. linux 下crontab相关定时触发的配置规则

    linux 下crontab相关定时触发的配置规则: 1.基本格式 :* * * * * command(分 时 日 月 周 命令)2.取值范围:分钟1-59 每分钟用*或者 */1表示小时1-23( ...

  9. linux下PS1命令提示符设置

    linux下PS1命令提示符设置 在此文件最后一行添加:vim /etc/profileexport PS1='[\u@\h \W]\$ '   #这里必须用单引号.     \d :代表日期,格式为 ...

随机推荐

  1. matplotlib 进阶之Tight Layout guide

    目录 简单的例子 Use with GridSpec Legend and Annotations Use with AxesGrid1 Colorbar 函数链接 matplotlib教程学习笔记 ...

  2. 解决opencv:AttributeError: 'NoneType' object has no attribute 'copy'

    情况一: 路径中有中文,更改即可 情况二:可以运行代码,在运行结束时显示 AttributeError: 'NoneType' object has no attribute 'copy' 因为如果是 ...

  3. <学习opencv>图像和大型阵列类型

    OPenCV /*=========================================================================*/ // 图像和大型阵列类型 /* ...

  4. 【jvm】06-new一个对象到底占了多少内存?

    [jvm]06-new一个对象到底占了多少内存? 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有帮助到你的话请顺 ...

  5. ProtoBuf3语法指南(Protocol Buffers)_下

    0.说明 ProtoBuf3语法指南, 又称为proto3, 是谷歌的Protocol Buffers第3个版本. 本文基于官方英文版本翻译, 加上了自己的理解少量修改, 一共分为上下两部分. 1.A ...

  6. Windows下安装配置Maven

    1.下载Maven 官方下载地址:http://maven.apache.org/download.cgi 目前Apache Maven最小版本为3.6.3, 下载适合Windows的安装包apach ...

  7. MATLAB 设置示波器颜色和行列

    设置颜色 设置行列和图例 放大缩小显示

  8. 从一堆 JAR 文件中,找出一个 Java class 文件的所在配置

    Find a class somewhere inside dozens of JAR files? find path/to/libs -name '*.jar' -exec grep -Hls C ...

  9. iview在ie9及以上的兼容问题解决方案

    兼容requestAnimationFrame let lastTime = 0 let vendors = ['ms', 'moz', 'webkit', 'o'] for (let x = 0; ...

  10. 学习笔记--Java标识符

    Java标识符 /** * 关于 Java 语言当中的标识符 * * 1. 什么是标识符? * - 在 Java 源程序当中凡是程序员有权利自己命名 * - 标识符可以标识(类名.方法名.变量名.常量 ...