core 文件生成
//test.c
#include <stdio.h>
const char * p = "hello world";
int main()
{
((char*)p)[0] = 'T';
return 0;
}
g++ -g test.c
./a.out
Segmentation fault (core dumped)
但是,并没有生成core文件。
这是因为系统默认core文件大小为0。
可以使用ulimit -c修改。
ulimit -c
ulimit -c 1000
ulimit -c unlimited
gdb a.out core
gdb中键入where就可以查看到在哪里奔溃。
http://blog.csdn.net/longxj04/article/details/7716818
在下列条件下不产生 core 文件
(a)进程是设置用户 ID 的,而且当前用户并非程序文件的所有者。
(b)进程是设置组 ID 的,而且当前用户并非该程序文件的组所有者。
(c)用户没有写当前工作目录的权限。
(d)文件已存在,而且用户对该文件没有写权限。
(e)文件太大(RLIMIT_CORE 限制)。