Linux下指定生成core文件的方法
Linux下编译程序的非正常崩溃提示为“CORE DUMP”,然而在一般情况下却不知道程序为什么会core dump
通过开启linux的core dump可以指定程序崩溃时生成core文件,core文件生成的目录在运行程序的同目录,文件名称一般为core.XXXX等
查看生成core文件是否开启:[root@localhost ~]#ulimit -c
其他参数说明:
[root@localhost /]# ulimit -a
core file size (blocks, -c) 1024
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 127470
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) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 127470
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[root@localhost /]#
结果为0则代表当前所有程序异常崩溃不生成core文件,
[root@localhost ~]# ulimit -c
0 #当前值表示不生成core文件
[root@localhost ~]#
[root@localhost ~]#ulimit -c unlimited #开启生成core文件,文件大小无限制
[root@localhost ~]#ulimit -c 1024 #开启生成core文件,文件大小限制在1024KB以内
此时再次输入ulimit则能看到core生成规则:
[root@localhost ~]# ulimit -c
0
[root@localhost ~]# ulimit -c 1024
[root@localhost ~]# ulimit -c
1024
[root@localhost ~]#
root@localhost ~]#ulimit -c 0 #关闭core文件生成
在core生成开启的情况下,linux的程序在异常崩溃时一定会产生core文件,当core文件超过限定的大小时,文件将不生成
若在ulimit -c 1024情况下异常崩溃没有生成core文件,则可以通过ulimit -c unlimited 将core的文件规定设置为无限制
查看core文件:
[root@localhost]# gdb -c core.100001 #gdb -c core_filename