核心转储(core dump),在汉语中有时戏称为
吐核,是操作系统在进程收到某些信号而终止运行时,将此时进程地址空间的内容以及有关进程状态的其他信息写出的一个磁盘文件。这种信息往往用于调试
当一个进程要异常终止时,可以选择把进程的用户空间内存数据全部保存到磁盘上,文件名通常是core,这叫做Core Dump。进程异常终止通常是因为程序错误,比如非法内存访问导致段错误, 事后可以用调试器检查core文件以查清错误原因,这叫做Post-mortem Debug(事后调试)。
一个进程允许 产生多大的core文件取决于进程的Resource Limit(这个信息保在PCB中)。默认是不允许产生core文件的, 因为core文件中可能包含用户密码等敏感信息,不安全。在开发调试阶段可以用ulimit命令改变这个限制,允许产生core文件。
用ulimit命令改变Shell进程的Resource Limit
允许core文件最大为1024K:

写一个非法访问内存的程序并运行:


使用gdb可以查看core文件中的错误信息:

或者这样

然后

信号11(SIGSEGV)是当一个进程执行了一个无效的内存引用,或发生段错误时发送给它的信号