在进程当前工作目录的下创建。通常与程序在相同的路径下。但如果程序中调用了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-11的TRAP指令。
–SIGXCPU SVR4和4.3+BSD支持资源限制的概念。如果进程超过了其软CPU时间限制,则产生此信号。
–SIGXFSZ 如果进程超过了其软文件长度限制,则SVR4和4.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文件生成的种种种种/