linux设置启用生成core文件
某些时候,需要监测程序异常退出的问题,可以使用生成core文件方式来定位问题
使用以下命令查看是否启用了core文件生成
[php]
ulimit -a
[/php]
结果如下所示
[php]
linux-hhy2:~ # ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 40960
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 40960
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[/php]
在第一行中显示core file size (blocks, -c) 这个值为0则无法生成core文件,可以使用以下命令来设置启用core文件生成
[php]
ulimit -c 1024
[/php]
或者
[php]
ulimit -c unlimited
[/php]
再次命令
[php]
ulimit -a
[/php]
可以看到,显示已经启用core文件生成
[php]
linux-hhy2:~ # ulimit -c unlimited
You have new mail in /var/mail/root
linux-hhy2:~ # ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
pending signals (-i) 40960
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 40960
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
[/php]
这样,当程序异常退出时,会在程序目录中生成core.xxxx的文件,然后使用输入gdb –c core文件 –f 执行文件来查看core内容
[php]
gdb -c core.22960 -f /opt/webserver/bin/server
[/php]
然后输入bt查看调用堆栈
另一种生成core文件的方式,是使用gcore命令,首先使用ps -ef | grep my命令查看进程号,然后使用gcore -o 文件名 进程ID命令来产生core文件
[php]
linux-hhy2:~ # ps -ef | grep my
linux-hhy2:~ # gcore -o /opt/webserver/bin/testcore 4969
[/php]