一,Core dump文件简介
导致进程产生core dump的信号,请参考 “用GDB调试程序--调试器GDB常用功能(菜鸟级) ”:
http://blog.csdn.net/IterZebra/archive/2011/02/22/6198875.aspx 的二,c)。
设置core dump文件生成的目录:
echo mycore-%e > /proc/sys/kernel/core_pattern
echo "/tmp/cores/core-%e " > /proc/sys/kernel/core_pattern
core dump文件生成开关和大小设定:
ulimit -c limit 其中ulimit是用于获取和设定SHELL和其中启动的进程的相关资源的系统命令,
-c表示设置core文件信息,limit是以k为单位的core文件的大小,unlimited则表示无限大。
以RHEL5为例,core开关系统默认设定方法:
守护进程 配置文件 :/etc/init.d/functions文件中的配置语句
corelimit="ulimit -S -c ${DAEMON_COREFILE_LIMIT:-0}“
SHELL配置 配置文件 : /etc/profile
文件中的配置语句 ulimit -S -c 0>/dev/null 2>&1
<!-- [if !mso]> <mce:style><!-- v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} p\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} v\:textbox {display:none;} --> <!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
proc/sys/kernel/core_pattern文件(Linux 2.4以前不存在此文件)中定义了CORE DUMP文件的名 称
(默认为”core”),其中可以使用以下关键字:
<!-- [if !mso]> <mce:style><!-- v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} p\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} v\:textbox {display:none;} --> <!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
<!-- [if !mso]> <mce:style><!-- v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} p\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} v\:textbox {display:none;} --> <!-- [endif]--><!-- [if !ppt]--><!-- [endif]--> /proc/sys/kernel/core_pattern中未定义%p时,
/proc/sys/kernel/core_uses_pid文件中定义是否在CORE DUMP文件名后追加进程ID “.PID”
<!-- [if !mso]> <mce:style><!-- v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} p\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} v\:textbox {display:none;} --> <!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
<!-- [if !mso]> <mce:style><!-- v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} p\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} v\:textbox {display:none;} --> <!-- [endif]--><!-- [if !ppt]--><!-- [endif]--> sysctl 命令也可以对以上配置进行设定 请参考 man sysctl
suse Linux下配置core dump文件的目录:
编辑 vim /etc/sysctl.conf
#Set core dump directroy
kernel.core_pattern = /var/opt/nec/pfc/core/%e-%p.core
二,用GDB制作core dump文件
<!-- [if !mso]> <mce:style><!-- v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} p\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} v\:textbox {display:none;} --> <!-- [endif]--><!-- [if !ppt]--><!-- [endif]--> 实际开发中经常遇到程序(特别是后台程序)不响应外界的操作,好像阻塞在某处的现象,
此种情况下也可以取得c ore文件进行分析。
如下,对PID进程,使用gcore产生core dump名字为corefilename,然后保存。
<!-- [if !mso]> <mce:style><!-- v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} p\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} v\:textbox {display:none;} --> <!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
<!-- [if !mso]> <mce:style><!-- v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} p\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} v\:textbox {display:none;} --> <!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
三,本文结束语
设置core dump以便调试,在进程不响应的时候制作core文件以便分析,是调试中常用的技术。
希望本文对您有所帮助。
<!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
<!-- [if !mso]> <mce:style><!-- v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} p\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} v\:textbox {display:none;} --> <!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
<!-- [if !mso]> <mce:style><!-- v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} p\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} v\:textbox {display:none;} --> <!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->