Core Dump(核心转储):
当一个进程要异常终止时,可以选择把进程的用户空间内存数据全部保存到磁盘上,文件名通常是core,叫做Core Dump(保存当前程序运行的数据以及调用栈信息),可以用于错误原因定位调试
为什么不用gdb呢?
答:如果程序运行错误,可以直接通过core文件来gdb调试(有些错误可能是偶然发生的,可能在gdb调试时并不会显露出来,只有在core dump记录之后才能快速定位进行调试)
CoreDump默认关闭:确保隐私安全/资源占用,
1.记录的信息里面可能有隐秘性信息(如用户名和密码)
2.Core Dump 文件很大且不会自动清理
CoreDump打开:ulimit -c (int)当这个值为0 时则关闭
(一个进程产生多大的core文件取决于进程的Resource Limit(这个信息保存在PCB中),使用ulimit命令改变这个限制)
ulimit命令实际是改变Shell进程的Resourse Limit
1.首先将Core Dump打开
2.运行死循环程序
3.新建窗口,查看PID,并kill该程序
4.重新回到程序运行界面,发现已经Core Dumped,而ls产生了一个CoreDump文件
5.使用Core Dump文件查看错误(core-file ./test.992)
此时查看调用栈信息可以看到:__kernel_vsyscall (),即为因死循环终止