欢迎来到天天文库
浏览记录
ID:9508443
大小:101.50 KB
页数:20页
时间:2018-05-01
《aix 下的 core dump 分析入门》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、AIX下的coredump分析入门 Coredump基本知识 本节主要探讨coredump产生的背景知识。对这部分不感兴趣的读者可以直接阅读第二章,了解基本的coredump定位手段。 起源 软件是人思维的产物。智者千虑,必有一失,人的思维总有缺陷,反映到软件层面上就是程序bug。程序bug的终极体现就是coredump,coredump是软件错误无法恢复的产物。 生成过程 进程coredump与系统dump的产生,从程序原理上来说是基本一致的。dump的生成一般是在系统进行中断处理时进行的,下面简单介绍一下中断机制。 操作系统的中断机
2、制 操作系统是由中断驱动的。广义的中断一般分为两类,中断(Interrupts)和异常(Exceptions)。中断可在任何时候发生,与CPU正在执行什么指令无关,中断主要由I/O设备、处理器时钟(分时系统依赖时钟中断划分时间片)或定时器等硬件引发,可以被允许或取消。而异常是由于CPU执行了某些指令引起的,可以包括存储器存取违规、除0或者特定调试指令等,内核也将系统服务视为异常。系统对这两类中断的处理基本上是相同的。 每个中断都会唯一对应到一个中断处理程序,在该中断触发时,相应的处理程序就会被执行。例如应用进程进行系统调用时,就会触发一个软件异常
3、,进入中断处理函数,完成从用户态到系统态的迁移并进入相应系统调用的入口点。应用进程coredump也是一个类似的过程。 应用进程coredump生成过程 在进程运行出现异常行为时,例如无效地址访问、浮点异常、指令异常等,将导致系统转入内核态进行异常处理(即中断处理),向相应的进程发出特定信号例如SIGSEGV、SIGFPE、SIGILL等。如果应用进程注册了相应信号的处理函数(例如可通过sigaction注册信号处理函数),则调用相应处理函数进行处理(应用程序可以选择记录信息后生成coredump并退出);否则将采取默认动作,例如SIGSEGV的
4、默认动作是生成coredump并退出程序。 进程coredump的时候,操作系统会将进程终止并释放其占用的资源,正常情况下,应用进程coredump不会对系统本身的运行造成危害。当然如果系统中存在与此进程相关的其他进程,则这些进程会受到影响,至于后果则视其对此异常的具体处理而定。 由于相关指令已经包含在可执行文件中,core文件一般只包含进程异常时相关的内存信息。其格式可参考/usr/include/sys/core.h或者AIX帮助文档的FilesReference章节。我们一般需要结合core文件以及可执行程序,来分析问题所在。 注:由于进
5、程信号处理本质上是异步的,应用进程注册的信号处理函数中使用的例程需要保证是异步信号安全的,例如不能使用诸如pthread_开头的例程。 系统dump生成过程 系统异常dump的具体过程与应用进程类似,但由于更接近底层,为了避免问题所在的资源(例如文件系统)正好包含在生成dump需要使用的资源中,造成dump无法生成,操作系统一般会用最简单的方式来生成dump。例如系统内存小于4G的情况下,一般直接将dump生成在pagingspace中;大于4G时,会建专门的lg_dumplv逻辑卷(裸设备)保存dump信息。在系统重启的时候,如果设置的DUMP
6、转存目录(文件系统中的目录)有足够空间,它将会转存成一个文件系统文件,缺省情况下,是/var/adm/ras/下的vmcore*这样的文件。 系统dump一般可以通过升级微码、提高系统补丁级别、升级驱动等方式解决。 Coredump基本知识 本节主要探讨coredump产生的背景知识。对这部分不感兴趣的读者可以直接阅读第二章,了解基本的coredump定位手段。 起源 软件是人思维的产物。智者千虑,必有一失,人的思维总有缺陷,反映到软件层面上就是程序bug。程序bug的终极体现就是coredump,coredump是软件错误无法恢复的产物。
7、 生成过程 进程coredump与系统dump的产生,从程序原理上来说是基本一致的。dump的生成一般是在系统进行中断处理时进行的,下面简单介绍一下中断机制。 操作系统的中断机制 操作系统是由中断驱动的。广义的中断一般分为两类,中断(Interrupts)和异常(Exceptions)。中断可在任何时候发生,与CPU正在执行什么指令无关,中断主要由I/O设备、处理器时钟(分时系统依赖时钟中断划分时间片)或定时器等硬件引发,可以被允许或取消。而异常是由于CPU执行了某些指令引起的,可以包括存储器存取违规、除0或者特定调试指令等,内核也将系统服务
8、视为异常。系统对这两类中断的处理基本上是相同的。 每个中断都会唯一对应到一个中断处理程序,在该中断触发时,
此文档下载收益归作者所有