Linux下当程序crash时,会产生core文件,记录程序非正常退出时的内存映象,通过gdb可以加载core文件可调试跟踪程序出错的代码所在行。

配置coredump
Coredump的设置和2个文件相关。在/proc/sys/kernel目录下:
/proc/sys/kernel/core_pattern文件设置core文件的保存路径和文件名称,pattern可使用参数:
%p – insert pid into filename
%u – insert current uid into filename
%g – insert current gid into filename
%s – insert signal that caused the coredump into the filename
%t – insert UNIX time that the coredump occurred into filename
%h – insert hostname where the coredump happened into filename
%e – insert coredumping executable name into filename
如:
       echo "/data/coredump/core_%e_%t" > /proc/sys/kernel/core_pattern
core文件统一在/data/coredump目录下产生,格式为core_进程名_时间戳
/proc/sys/kernel/core_pattern中的默认内容是core,表示core文件生成在可执行程序所在目录,文件名叫core。新的core就会覆盖旧的core文件。
/proc/sys/kernel/core_users_pid控制core文件是否加pid作为core_pattern中约定文件名称的扩展名。表示添加pid作为扩展名,生成的core文件格式为core.xxxx;为0则表示生成的core文件同一命名为core_pattern。该文件内容默认值是0
如:
       echo '1' > /proc/sys/kernel/core_uses_pid
再加上core_pattern 的设置,core文件统一在/data/coredump目录下产生,格式为core_进程名_时间戳.进程号
 
Core文件开关
使用ulimit -c查看core文件生成开关。若为0则表示不会生成core文件。
使用ulimit -c size设置core文件的大小限制,size的单位是kbyte。若要想core文件大小不受限制,则使用ulimit -c unlimited
有了core文件。使用gdb加载调试:
       gdb –c core文件名 可执行程序名

转载本站文章请注明,转载自:神秘果

本文链接: http://www.shenmiguo.com/archives/2010/327_coredump.html

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <font color="" face="" size=""> <span style="">