Chinaunix首页 | 论坛 | 博客
  • 博客访问: 182301
  • 博文数量: 512
  • 博客积分: 23560
  • 博客等级: 上将
  • 技术积分: 5700
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-17 23:19
文章分类

全部博文(512)

文章存档

2010年(512)

我的朋友
最近访客

分类:

2010-10-23 18:58:24

  core dump 基本知识   本节主要探讨 core dump 产生的背景知识。对这部分不感兴趣的读者可以直接阅读第二章,了解基本的 core dump 定位手段。   起源   软件是人思维的产物。智者千虑,必有一失,人的思维总有缺陷,反映到软件层面上就是程序 bug。程序 bug 的终极体现就是 core dump,core dump 是软件错误无法恢复的产物。   生成过程   进程 core dump 与系统 dump 的产生,从程序原理上来说是基本一致的。dump 的生成一般是在系统进行中断处理时进行的,下面简单介绍一下中断机制。   操作系统的中断机制   操作系统是由中断驱动的。广义的中断一般分为两类,中断 (interrupts) 和异常 (exceptions)。中断可在任何时候发生,与 cpu 正在执行什么指令无关,中断主要由 i/o 设备、处理器时钟(分时系统依赖时钟中断划分时间片)或定时器等硬件引发,可以被允许或取消。而异常是由于 cpu 执行了某些指令引起的,可以包括存储器存取违规、除 0 或者特定调试指令等,内核也将系统服务视为异常。系统对这两类中断的处理基本上是相同的。   每个中断都会唯一对应到一个中断处理程序,在该中断触发时,相应的处理程序就会被执行。例如应用进程进行系统调用时,就会触发一个软件异常,进入中断处理函数,完成从用户态到系统态的迁移并进入相应系统调用的入口点。应用进程 coredump 也是一个类似的过程。   应用进程 core dump 生成过程   在进程运行出现异常行为时,例如无效地址访问、浮点异常、指令异常等,将导致系统转入内核态进行异常处理(即中断处理),向相应的进程发出特定信号例如 sigsegv、sigfpe、sigill 等。如果应用进程注册了相应信号的处理函数(例如可通过 sigaction 注册信号处理函数),则调用相应处理函数进行处理(应用程序可以选择记录信息后生成 core dump 并退出);否则将采取默认动作,例如 sigsegv 的默认动作是生成 core dump 并退出程序。 如果喜欢aix 下的 core dump 分析入门请收藏或告诉您的好朋友.
阅读(108) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~