Linux生成core文件、core文件路径设置
设置core文件大小
##查看core文件
列出所有资源的限制: ulimit -a
[root@localhost ~]# ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 15027
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 15027
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
unlimited:core文件的大小不受限制
0:程序出错时不会产生core文件
1024:代表1024k,core文件超出该大小就不能生成了
设置core文件
ulimit -c fileSize
设置core文件的名称和文件路径
- 修改文件命令
#vim /etc/profile,然后进入编辑模式,在profile文件中加入
ulimit -c unlimited - 指定生成文件的路径和名字
执行# vim /etc/sysctl.conf,进入编辑模式,加入下面两行
kernel.core_pattern=/var/core/core_%e_%p
kernel.core_uses_pid=0
在var下创建core目录,用# sysctl –p /etc/sysctl.conf,是修改马上生效。
测试
kill -s SIGSEGV $$ ,执行命令,可以看到/var/core下生成了一个core文件
遇到的问题
1、修改后为生效
重新启动服务器
2、gdb调试提示:Missing separate debuginfos, use: debuginfo-install coreutils-8.22-24.el7.x86_64
原因:使用yum install glibc安装,发现只是安装了一些基本库,不包含 glibc-debuginfo
解决:1、修改“/etc/yum.repos.d/CentOS-Debuginfo.repo”文件的enable=1
2、 执行:debuginfo-install coreutils-8.22-24.el7.x86_64