linux上coredump的机制内容和分析

linux上coredump的机制内容和分析

ID:20605157

大小:92.50 KB

页数:4页

时间:2018-10-14

linux上coredump的机制内容和分析_第1页
linux上coredump的机制内容和分析_第2页
linux上coredump的机制内容和分析_第3页
linux上coredump的机制内容和分析_第4页
资源描述:

《linux上coredump的机制内容和分析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Linux上CoreDump的机制、内容和分析Psqa左玉龙Core,又称之为CoreDump,是Unix/Linux操作系统的一种机制,对于线上服务而言,Core令人闻之色变,因为出Core的过程意味着服务暂时不能正常响应,需要恢复,并且隨着吐Core逬程的内存空间越大,此过程可能持续很长一段时间(fel如当进程占用60G+以上内存时,完整Core^:件需要15分钟才能完全写到磁盘

2、),这期间产生的流量损失,不可估量。凡事皆有两面性,OS在出Core的同时,虽然会终止掉当前逬程,但是也会保留下第一手的现场数

3、据,OS仿佛是一架被按下快门的相机,而照片就是产出的Core艾件。里面含有当进程被终止时内存、CIH;寄存器等信息,可以供后续开发人员进行调试。矢于Core产生的原因很多,比如过去一些tnix的版本不支持现代Linux上这种GDB直接附着到逬程上逬行调试的机制,需要先向进程发送终止信号,然后用工具阅读core文件。在Linux上,我们就可以使用kill向一个指定的逬程发送信号或者使用gcore命今来使其主动出Core并退出。如果从浅B次的原因上来讲,出Core意味着当前逬程存在BUG,需要程序员修复。从深展次

4、的原因上讲,是当前进程触犯了某些OS层级的保护机制,逼迫OS向当前逬程发送诸如STGSEGV(即signal11)之类的信号,例如访冋空指针或数组越界出Core,实际上是触犯了OS的内存管理,访问了非当前进程的内存空间,OS需要通过出Core来进行警示,这就好像一个人身体内存在病毒,免疫系统就会通过发热来警示,并导致人体发烧是一个道理(有意思的是,并不是每次数组越界都会出Core,这和OS的内存管理中虚似页面分配大小和边界有关,即使不出Core,也很有可能读到脏数据,引起后续程序行为紊乱,这是一种很难追查的B

5、UG)。说了这些,似乎感觉Core很强势,让人感觉缺乏控制力,其实不然。控制Core产生的行为和方式,有两个途径:1.修改/proc/sys/kernel/core_pattern文件,此文件用于控制Core艾件产生的艾件名,默认情况下,此文件内容只有一行内容:“core”,此文件支持定制,一般使用%配合不同的字符,这里罗列几种:Z%p出Core逬程的PTDZ%u出Core进程的UIDZ%s造成Core的signal号%t出Core的时间,从1970-01-010(k0(k00幵始的秒数Z%e出Core进程对

6、应的可执行文件名更强大的是,我扪可以在此文件中配置管道,来將产生的Core文件作为输入,送给某个特定的处理程序,例如网络传输程序,可以将产出的Core直接送到另一台服务器上,这对于小硬盘服务器来说,是一个不错的选择。2.Ulimit-€命令,此命令可以显示当前OS对于Core文件大小的限制,如果为0,则表示不允许产生Core文件。如果想逬行修改,可以使用:U1imit-cn其中n为数字,表示允许Core文件体枳的最大值,单位为Kb,如果想设为无限大,可以执行:Ulimit-cunlimilcd产生了Core文

7、件之后,就是如何查看Core文件,并确定问题所在,进行修复。为此,我们不妨先来看看Core文件的格式,多了解一些Core文件。首先可以明确一点,Core文件的格式ELF格式,这一点可以通过使用readelf_h命今来证实,如下图:ELFHeader:Magic:7f454c460201010000OC000000000000endianClass:Data:Version:OS/ABI:ABIVersion:ELF642*scomplement,1(current)UNIX-SystemV0little'聲T

8、ype:CORE(Corefile)Machine:AdvancedMicroDevicesX86-64Version:0x1Entrypointaddress:OxCStartofprogramheaders:64(bytesintofile)Startofsectionheaders:0(bytesintofile)Flags:OxCSizeofthisheader:64(bytes)Sizeofprogramheaders:56(bytes)uaberofprogramheaders:13Sizeof

9、sectionheaders:0(bytes)Numberofsectionheaders:0headerstringtableindex:0从读出来的ELF头信息可以看到,此文件类型为Core文件,那么readelf是如何得知的呢?可以从下面的数据结构中窥得一二:番defineEI^NIDENT16typedefstruct{unsignedchareidentlEINIDENT];^(Elf32

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。