本节主要探讨 core dump 产生的背景知识。对这部分不感兴趣的读者可以直接阅读第二章,了解基本的 core dump 定位手段。
软件是人思维的产物。智者千虑,必有一失,人的思维总有缺陷,反映到软件层面上就是程序 bug。程序 bug 的终极体现就是 core dump,core dump 是软件错误无法恢复的产物。
进程 core dump 与系统 dump 的产生,从程序原理上来说是基本一致的。dump 的生成一般是在系统进行中断处理时进行的,下面简单介绍一下中断机制。
操作系统的中断机制
操作系统是由中断驱动的。广义的中断一般分为两类,中断 (Interrupts) 和异常 (Exceptions)。中断可在任何时候发生,与 CPU 正在执行什么指令无关,中断主要由 I/O 设备、处理器时钟(分时系统依赖时钟中断划分时间片)或定时器等硬件引发,可以被允许或取消。而异常是由于 CPU 执行了某些指令引起的,可以包括存储器存取违规、除 0 或者特定调试指令等,内核也将系统服务视为异常。系统对这两类中断的处理基本上是相同的。
每个中断都会唯一对应到一个中断处理程序,在该中断触发时,相应的处理程序就会被执行。例如应用进程进行系统调用时,就会触发一个软件异常,进入中断处理函数,完成从用户态到系统态的迁移并进入相应系统调用的入口点。应用进程 coredump 也是一个类似的过程。
应用进程 core dump 生成过程...
本文转自IBM Developerworks中国