Linux C++服务端开发教程(三) coredump

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);后者会向进程

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值