Core_dump使用

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打开

Core_dump使用

2.运行死循环程序

Core_dump使用

3.新建窗口,查看PID,并kill该程序

Core_dump使用

4.重新回到程序运行界面,发现已经Core Dumped,而ls产生了一个CoreDump文件

Core_dump使用

5.使用Core Dump文件查看错误(core-file ./test.992)

Core_dump使用

此时查看调用栈信息可以看到:__kernel_vsyscall (),即为因死循环终止