免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6848 | 回复: 5
打印 上一主题 下一主题

[C] 为什么没有产生core 文件? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-01 11:39 |只看该作者 |倒序浏览
程序里面检测到错误以后,我调用了abort()函数.可是每次都是程序,死掉而没有产生core文件。找错很不方便。
为什么没有产生core 文件呢?我用的rhel5

论坛徽章:
1
双子座
日期:2015-01-04 14:25:06
2 [报告]
发表于 2008-09-01 11:42 |只看该作者
一、要保证存放Coredump的目录存在且进程对该目录有写权限。存放Coredump的目录即进程的当前目录,一般就是当初发出命令启动该进程时所在的目录。但如果是通过脚本启动,则脚本可能会修改当前目录,这时进程真正的当前目录就会与当初执行脚本所在目录不同。这时可以查看”/proc/<进程pid>/cwd“符号链接的目标来确定进程真正的当前目录地址。通过系统服务启动的进程也可通过这一方法查看。
二、若程序调用了seteuid()/setegid()改变了进程的有效用户或组,则在默认情况下系统不会为这些进程生成Coredump。很多服务程序都会调用seteuid(),如MySQL,不论你用什么用户运行mysqld_safe启动MySQL,mysqld进行的有效用户始终是msyql用户。如果你当初是以用户A运行了某个程序,但在ps里看到的这个程序的用户却是B的话,那么这些进程就是调用了seteuid了。为了能够让这些进程生成Coredump,需要(echo "1" > /proc/sys/kernel/suid_dumpable).
三、这个一般都知道,就是要设置足够大的Core文件大小限制了。程序崩溃时生成的Core文件大小即为程序运行时占用的内存大小。但程序崩溃时的行为不可按平常时的行为来估计,比如缓冲区溢出等错误可能导致堆栈被破坏,因此经常会出现某个变量的值被修改成乱七八糟的,然后程序用这个大小去申请内存就可能导致程序比平常时多占用很多内存。因此无论程序正常运行时占用的内存多么少,要保证生成Core文件还是将大小限制设为unlimited为好。

论坛徽章:
1
双子座
日期:2015-01-04 14:25:06
3 [报告]
发表于 2008-09-01 11:44 |只看该作者
这是上次在网上找到的
我按这三条做就再没有这样的疑问

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
4 [报告]
发表于 2008-09-01 11:47 |只看该作者
原帖由 UnixStudier 于 2008-9-1 11:39 发表
程序里面检测到错误以后,我调用了abort()函数.可是每次都是程序,死掉而没有产生core文件。找错很不方便。
为什么没有产生core 文件呢?我用的rhel5


你执行一下
unlimit -a
看看输出的结果。
估计core file size是0,这时就不会产生core dump文件。

使用
ulimit -c  <size>
可以设置core file size,设置后就可以生成core文件了。

论坛徽章:
0
5 [报告]
发表于 2008-09-01 14:10 |只看该作者
原帖由 happy_fish100 于 2008-9-1 11:47 发表


你执行一下
unlimit -a
看看输出的结果。
估计core file size是0,这时就不会产生core dump文件。

使用
ulimit -c  
可以设置core file size,设置后就可以生成core文件了。


非常感谢,问题解决了。ulimit -a发现的core file size是0.

论坛徽章:
0
6 [报告]
发表于 2011-07-13 11:24 |只看该作者
你应该感谢的是2楼,而不是4楼
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP