免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: teng0210
打印 上一主题 下一主题

不产生core文件 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-09-28 17:49 |只看该作者
怎 么弄的啊???? 也不说

论坛徽章:
0
12 [报告]
发表于 2010-09-29 09:37 |只看该作者
问题解决, 今天同事说可能是/proc/sys/kernel/core_pattern
的问题, 回家试了一下, 果然是
和8楼说的一 ...
teng0210 发表于 2010-09-24 23:17



    如果解决了,建议把解决办法写出来,大家忙着帮你找思路,而你解决了也应该分享,对吧?

论坛徽章:
0
13 [报告]
发表于 2010-09-29 09:38 |只看该作者
找了一个相关资料,解释比较详细
//---------------------------------------------------------------
1. core文件的简单介绍
//---------------------------------------------------------------

在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。


//---------------------------------------------------------------
2. 开启或关闭core文件的生成
//---------------------------------------------------------------

用以下命令来阻止系统生成core文件:
ulimit -c 0
下面的命令可以检查生成core文件的选项是否打开:
ulimit -a
该命令将显示所有的用户定制,其中选项-a代表“all”。

也可以修改系统文件来调整core选项
在/etc/profile通常会有这样一句话来禁止产生core文件,通常这种设置是合理的:
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
但是在开发过程中有时为了调试问题,还是需要在特定的用户环境下打开core文件产生的设置
在用户的~/.bash_profile里加上ulimit -c unlimited来让特定的用户可以产生core文件
如果ulimit -c 0 则也是禁止产生core文件,而ulimit -c 1024则限制产生的core文件的大小不能超过1024kb


//---------------------------------------------------------------
3. 设置Core Dump的核心转储文件目录和命名规则
//---------------------------------------------------------------

/proc/sys/kernel/core_uses_pid可以控制产生的core文件的文件名中是否添加pid作为扩展,如果添加则文件内容为1,否则为0
proc/sys/kernel/core_pattern可以设置格式化的core文件保存位置或文件名,比如原来文件内容是core-%e
可以这样修改:
echo "/corefile/core-%e-%p-%t" > core_pattern
将会控制所产生的core文件会存放到/corefile目录下,产生的文件名为core-命令名-pid-时间戳
以下是参数列表:
    %p - insert pid into filename 添加pid
    %u - insert current uid into filename 添加当前uid
    %g - insert current gid into filename 添加当前gid
    %s - insert signal that caused the coredump into the filename 添加导致产生core的信号
    %t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间
    %h - insert hostname where the coredump happened into filename 添加主机名
    %e - insert coredumping executable name into filename 添加命令名


//---------------------------------------------------------------
4. 使用core文件
//---------------------------------------------------------------

在core文件所在目录下键入:
gdb -c core
它会启动GNU的调试器,来调试core文件,并且会显示生成此core文件的程序名,中止此程序的信号等等
如果你已经知道是由什么程序生成此core文件的,比如MyServer崩溃了生成core.12345,那么用此指令调试:
gdb -c core MyServer
以下怎么办就该去学习gdb的使用了


//---------------------------------------------------------------
5. 一个小方法来测试产生core文件
//---------------------------------------------------------------

直接输入指令:
kill -s SIGSEGV $$

论坛徽章:
0
14 [报告]
发表于 2010-10-03 19:09 |只看该作者
回复 11# sytpb

咔, 这几天放假了。
不知道你问题解决了没有。
详细见13楼的第三条, 设置一下就ok了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP