关于coredump文件

1)coredump 生成在哪个位置?

 在进程当前工作目录的下创建。通常与程序在相同的路径下。但如果程序中调用了chdir函数,则有可能改变了当前工作目录。这时core文件创建在 chdir指定的路径下。有好多程序崩溃了,我们却找不到core文件放在什么位置。和chdir函数就有关系。当然程序崩溃了不一定都产生core文件。


2)哪些错误(信号)可能导致coredump ?

Unix中(POSIX 1.x)中可能产生core的信号列出如下:

SIGABRT      SIGBUS       
SIGEMT       SIGFPE      SIGILL     SIGIOT    SIGQUIT    

SIGSEGV     
SIGSYS       SIGTRAP      SIGXCPU    SIGXFSZ

各个信号产生core和缺省的信号处理函数不尽相同。

–SIGABRT 调用abort函数时产生此信号。进程异常终止。
SIGBUS  指示一个实现定义的硬件故障。
SIGEMT  指示一个实现定义的硬件故障。
    
EMT
这一名字来自PDP-11 emulator trap 指令。
SIGFPE  此信号表示一个算术运算异常,例如除以0,浮点溢出等。
SIGILL  此信号指示进程已执行一条非法硬件指令。
       
4.3BSD
abort函数产生此信号。SIGABRT现在被用于此。
SIGIOT  这指示一个实现定义的硬件故障。
          
IOT
这个名字来自于PDP-11对于输入/输出TRAP(input/output TRAP)指令的缩写。系统V的早期版本,由abort函数产生此信号。SIGABRT现在被用于此。
SIGQUIT 当用户在终端上按退出键(一般采用Ctrl-\)时,产生此信号,并送至前台进程组中的所有进程。此信号不仅终止前台进程组(如SIGINT所做的那样),同时产生一个core文件。
SIGSEGV 指示进程进行了一次无效的存储访问。
    
名字SEGV表示段违例(segmentation
violation

SIGSYS  指示一个无效的系统调用。由于某种未知原因,进程执行了一条系统调用指令,但其指示系统调用类型的参数却是无效的。
SIGTRAP 指示一个实现定义的硬件故障。
     
此信号名来自于PDP-11TRAP指令。
SIGXCPU SVR44.3+BSD支持资源限制的概念。如果进程超过了其软CPU时间限制,则产生此信号。
SIGXFSZ 如果进程超过了其软文件长度限制,则SVR44.3+BSD产生此信号
摘自《UNIX环境高级编程》第10 信号。

By tompkins: 我们遇到得比较多的是   6) SIGABRT    11) SIGSEGV   
Program terminated with signal 6, Aborted.    一般是外部发过的信号引起的
Program terminated with signal 11, Segmentation fault.   这个是程序本身内存访问错误造成的。

3)为什么生成不了core文件?

在unix环境高级编程中文版里面,是这么描述的:
//
–进程是设置用户ID的,而且当前用户并非程序文件的所有者;  (进程的有效用户id和实际用户id不一致)

–进程是设置组ID的,而且当前用户并非该程序文件的组所有者; (进程的有效组id和实际组id不一致)

–用户没有写当前工作目录的许可权;

–该文件已存在,而且用户对该文件没有写权限。

–文件太大。
/

原版为:

The
core file will not be generated if (a) the process was set-user-ID and
the current user is not the owner of the program file, or (b) the
process was set-group-ID and the current user is not the group owner of
the file, (c) the user does not have permission to write in the current
working directory, (d) the file already exists and the user does not
have permission to write to it, or (e) the file is too big (recall the
RLIMIT_CORE limit in Section 7.11). The permissions of the core file
(assuming that the file doesn’t already exist) are usually user-read and
user-write, although Mac OS X sets only user-read.

/


转帖:https://sstompkins.wordpress.com/2010/08/11/关于coredump文件生成的种种种种/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值