Linux调试中,coredump文件产生要两个条件:
一是允许core文件产生,例如你设置 ulimit -c unlimited。并且对core文件的产生目录(也就是工作目录)要有写权限。
二是程序收到了产生core文件的信号,例如SIGABRT信号。
满足这两个条件才能产生coredump,跟编译时加-g没关系。
在下列条件下不产生core文件:
(a )进程是设置-用户-ID,而且当前用户并非程序文件的所有者;
(b )进程是设置-组-ID,而且当前用户并非该程序文件的组所有者;
a,b可以通过设置/proc/sys/kernel/suid_dumpable来改变,这样suid的也可以产生core文件
(c )用户没有写当前工作目录的许可权;
( d )文件太大。core文件的许可权(假定该文件在此之前并不存在)通常是用户读/写,组读和其他读。