coredump是什么?
程序异常退出时,会产生一个core文件, 该文件记录了程序运行时的内存,寄存器状态,堆栈指
针,内存管理信息还有各种函数调用堆栈信息等,我们可以理解为是程序工作当前状态存储生成的一个
文件,通过工具分析这个文件,我们可以定位到程序异常退出的时候对应的堆栈调用等信息,找出问题
所在并进行及时解决。
上面说当程序运行过程中异常终止或崩溃时会发生core dump,但还没说到什么具体的情景程序会
发生异常终止或崩溃,例如我们使用kill -9命令杀死一个进程会发生core dump吗?实验证明是不能
的,那么什么情况会产生呢?
Linux中信号是一种异步事件处理的机制, 每种信号对应有其默认的操作,你可以在这里查看
Linux系统提供的信号以及默认处理。默认操作主要包括忽略该信号(Ingore) 、暂停进程(Stop) 、
终止进程(Terminate). 终止并发生core dump (core) 等。如果我们信号均是采用默认操作,那
么,以下列出几种信号,它们在发生时会产生core dump,这个可以通过以下命令进行查看:
man 7 signal
当然不仅限于上面的几种信号。这就是为什么我们使用Ctrl+z 来挂起一个进程或者Ctrl+C 结束一
个进程均不会产生core dump,因为前者会向进程发出SIGTSTP信号,该信号的默认操作为暂停进程
(Stop Process);后者会向进程