城市直播房产教育博客汽车
投稿投诉
汽车报价
买车新车
博客专栏
专题精品
教育留学
高考读书
房产家居
彩票视频
直播黑猫
投资微博
城市上海
政务旅游

内核转储的设置

8月24日 程染筱投稿
  简介
  当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做CoreDump(中文有的翻译成核心转储)。
  我们可以认为coredump是内存快照,但实际上,除了内存信息之外,还有些关键的程序运行状态也会同时dump下来,例如寄存器信息(包括程序指针、栈指针等)、内存管理信息、其他处理器和操作系统状态和信息。
  coredump对于编程人员诊断和调试程序是非常有帮助的,因为对于有些程序错误是很难重现的,例如指针异常,而coredump文件可以再现程序出错时的情景。核心转储如何产生
  上面说当程序运行过程中异常终止或崩溃时会发生coredump,但还没说到什么具体的情景程序会发生异常终止或崩溃。
  例如我们使用kill9命令杀死一个进程会发生coredump吗?实验证明是不能的,那么什么情况会产生呢?
  Linux中信号是一种异步事件处理的机制,每种信号都有其对应的默认操作,你可以在signal(7)查看Linux系统提供的信号以及默认处理。
  默认操作主要包括:终止进程(Term)、忽略该信号(Ing)、终止进程并发生核心转储(Core)、暂停进程(Stop)、继续运行被暂停的进程(Cont)。
  如果我们信号均是采用默认操作,那么,以下列出的几种信号,它们在发生时会产生coredump:
  SignalActionComment说明SIGABRTCoreAbortsignalfromabort来自abort的终止信号SIGBUSCoreBuserror(badmemoryaccess)总线错误(内存访问错误)SIGFPECoreFloatingpointexception浮点异常SIGILLCoreIllegalInstruction非法指令SIGIOTCoreIOTtrap。AsynonymforSIGABRT物联网陷阱。SIGABRT的同义词SIGQUITCoreQuitfromkeyboard从键盘退出SIGSEGVCoreInvalidmemoryreference无效的内存引用SIGSYSCoreBadsystemcall(SVr4)错误的系统调用SIGTRAPCoreTracebreakpointtrap跟踪断点陷阱SIGUNUSEDCoreSynonymouswithSIGSYSSIGSYS的同义词SIGXCPUCoreCPUtimelimitexceeded(4。2BSD)超出CPU时间限制SIGXFSZCoreFilesizelimitexceeded(4。2BSD)超出文件大小限制
  这就是为什么我们使用Ctrlz来挂起一个进程或者CtrlC结束一个进程均不会产生coredump。
  因为前者会向进程发出SIGTSTP信号,该信号的默认操作为暂停进程(StopProcess);后者会向进程发出SIGINT信号,该信号默认操作为终止进程(TerminateProcess)。
  同样,上面提到的kill9命令会发出SIGKILL命令,该命令默认为终止进程。而如果我们使用Ctrl来终止一个进程,会向进程发出SIGQUIT信号,默认是会产生coredump的。
  还有其它情景会产生coredump,如:程序调用abort()函数、访存错误、非法指令等等。不会生成coredump文件的情况进程没有写入核心文件的权限。(默认情况下,核心文件称为core或core。pid,其中pid是转储核心的进程的ID,并在当前工作目录中创建。有关命名的详细信息,请参见下文。)如果出现以下情况,则写入核心文件失败:要创建的目录不可写,或者如果存在同名文件且不可写或不是常规文件(例如,它是目录或符号链接)。一个(可写的、常规的)文件与用于核心转储的同名文件已经存在,但有多个硬链接到该文件。将创建核心转储文件的文件系统已满;或已用完或以只读方式安装;或者用户已达到文件系统的配额。要创建核心转储文件的目录不存在。进程的RLIMITCORE(核心文件大小)或RLIMITFSIZE(文件大小)资源限制设置为零;请参阅getrlimit(2)和shell的ulimit命令的文档(csh(1)中的限制)。进程正在执行的二进制文件没有启用读取权限。(这是一种安全措施,可确保内容不可读的可执行文件不会产生可能可读的核心转储,其中包含可执行文件的映像。)进程正在执行一个setuserID(setgroupID)程序,该程序被除进程的真实用户(组)ID之外的用户(组)拥有,或者进程正在执行具有文件能力(capabilities)的程序(请参阅capabilities(7))。(但是,请参阅prctl(2)PRSETDUMPABLE操作的说明,以及proc(5)中procsysfssuiddumpable文件的说明)procsyskernelcorepattern为空且procsyskernelcoreusespid包含值0。请注意,如果procsyskernelcorepattern为空且procsyskernelcoreusespid包含值1,核心转储文件将具有。pid形式的名称,除非使用ls(1)a选项,否则此类文件将被隐藏。(自Linux3。7起)内核配置时没有配置CONFIGCOREDUMP选项。
  此外,如果使用了madvise(2)MADVDONTDUMP标志,则核心转储可能会排除进程的部分地址空间。启用内核转储
  使用ulimit命令可以查看当前的内核转储功能是否生效。c表示内核转储文件的大小限制,0表示内核转储无效。rootfirefly:ulimitc0
  使用以下命令即可开启内核转储功能,unlimited表示不限制core文件的大小。rootfirefly:ulimitcunlimitedrootfirefly:ulimitcunlimited
  在服务器上交叉编译一个测试程序,确认内核转储是否生效。includestdio。hintmain(void){intaNULL;a0x1;return0;}aarch64linuxgnugccgtest。cotest
  将生成的可执行程序拷贝到开发板上。rootfirefly:code。testSegmentationfault(coredumped)rootfirefly:codelscoretestrootfirefly:codefilecorecore:ELF64bitLSBcorefile,ARMaarch64,version1(SYSV),SVR4style,from。test,realuid:0,effectiveuid:0,realgid:0,effectivegid:0,execfn:。test,platform:aarch64
  将core文件拷贝到服务器上,可以使用以下命令解core文件mntsudoaarch64linuxgnugdbtestcore。。。。。GNUgdb(LinaroGDB2017。05)7。12。1。20170417git。。。。。。warning:Couldnotloadsharedlibrarysymbolsfor2libraries,e。g。libaarch64linuxgnulibc。so。6。Usetheinfosharedlibrarycommandtoseethecompletelisting。Doyouneedsetsolibsearchpathorsetsysroot?Corewasgeneratedby。test。ProgramterminatedwithsignalSIGSEGV,Segmentationfault。00x00000055815836f4inmain()attest。c:66a0x1;(gdb)l61includestdio。h23intmain(void)4{5intaNULL;6a0x1;7return0;8}(gdb)
  可以看到,在GDB启动后,已经打印出test。c的第6行收到了SIGSEGV信号,产生了段错误。使用list命令可以查看附近的源代码。在专用目录生成内核转储
  core文件默认会在当前目录生成,大多数时候,我们希望固定core文件的生成位置。
  内核转储保存位置可以通过sysctl变量kernel。corepattern设置。例如,在etcsysctl。conf中做如下设置。rootfirefly:vimetcsysctl。conf在末尾追加以下两行kernel。corepatternrootcoretepc。corekernel。coreusespid0使配置生效rootfirefly:sysctlpkernel。corepatternrootcoretepc。corekernel。coreusespid0
  在该状态下执行test测试程序,就会在rootcore下生成内核转储文件。rootfirefly:mnt。testSegmentationfault(coredumped)rootfirefly:mntlsrootcore1664718591test269918446744073709551615。core
  kernel。corepattern中可以设置的格式符如下
  格式符说明字符本身p被转储进程的进程ID(PID)u被转储进程的真实用户ID(realUID)g被转储进程的真实组ID(realGID)s引发转储的信号编号t转储时刻(从1970110:00开始的秒数)h主机名(同uname(2)返回的nodename)e可执行文件名c转储文件的大小上限(内核版本2。6。24后可用)压缩转储文件
  kernel。corepattern也支持管道,可以在kernel。corepattern后加入管道符自动压缩内核转储文件。vimetcsysctl。confkernel。corepatternusrlocalsbincorehelpertepckernel。coreusespid0sysctlp
  corehelper内容如下!binshexecgziprootcore1234。core。gz
  加上可执行权限chmod777usrlocalsbincorehelper
  这样,发生内核转储时,就会在rootcore下生成压缩的转储文件。rootfirefly:mnt。testSegmentationfault(coredumped)rootfirefly:mntlsrootcore1664720072test272318446744073709551615。core。gzrootfirefly:mnt启用整个系统的内核转储功能
  在终端通过命令行只是临时修改,重启后无效,要想永久修改有三种方式:在etcrc。local中增加一行ulimitcunlimited在etcprofile中增加一行ulimitcunlimited在etcsecuritylimits。conf最后增加如下两行记录:rootsoftcoreunlimitedroothardcoreunlimited利用内核转储掩码排除共享内存
  大型应用程序,通常会跑多个进程。如果所有进程的共享内存全部转存储的话,会对磁盘造成压力,转储过程也会加重系统的负担,甚至会由于转储时间过长导致服务停止时间过长。
  由于共享内存的进程中,共享内存的内容是相同的,所以可以只在某个进程中转储共享内存,无需全部转储。bit0转储匿名私有映射。bit1转储匿名共享映射。bit2转储文件支持的私有映射。bit3转储文件支持的共享映射。bit4(自Linux2。6。24起)转储ELF标头。bit5(自Linux2。6。28起)转储私有大页面。bit6(自Linux2。6。28)转储共享大页面。bit7(自Linux4。4起)转储私有DAX页面。bit8(自Linux4。4起)转储共享DAX页面。
  通过coredumpfilter的内容可以查看设置情况catprocPIDcoredumpfilter
  如果要跳过所有共享内存区域,应将掩码值设置为1。
  https:blog。csdn。netcanpoolarticledetails120804227
投诉 评论 转载

金维娜智勇双全,江苏苦战晋级四强,浙江女篮虽败犹荣WCBA季后赛八进四,江苏女篮迎来和浙江的决战,前两回合交手两队各胜一场,其实浙江本身实力和江苏有差距,能拿下一场已经完成任务,江苏则需要乘胜追击,不能再掉链子,内蒙古女篮早就……虚假授信恶意查征信,异地网贷被罚,宁波银行有多少违规操作如果说去年新闻话题的主角是地产,那么到了今年搭台唱戏的非银行业莫属。开年以来,很多银行都因为各式各样的问题收到不同额度罚单。据媒体2月,银保监会、央行以及外汇管理局3家监……雄鹿老板35亿出售球队,彻底商业化的NBA或引发套现潮名记Shams爆料:雄鹿老板马克拉斯里以35亿估值,将球队股份出售给哈斯拉姆体育集团,集团创始人吉米哈斯拉姆同时还是橄榄球队克利夫兰布朗队的老板。亚当校花出任联盟总裁之后……内核转储的设置简介当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做CoreDump(中文有的翻译成核心转储)。我们可以认……海洋生态系统明显恢复,400多头斑海豹洄游山东长岛随着天气回暖,大批国家一级保护动物斑海豹从辽东湾洄游到山东长岛,数量超过400只。洄游回来的斑海豹成群结队,模样憨态可掬。它们将长满胡须的嘴巴探出水面,露出圆圆的脑袋登上……国际研究评估东南极洲冰盖对过去和未来气候变化的响应8月10日,《科学》(Science)发表题为《东南极洲冰盖对过去和未来气候变化的响应》(ResponseoftheEastAntarcticIceSheettoPastand……心脏决定寿命建议中老年常吃1种食物,心脏越来越年轻导读:心脏决定寿命!建议中老年:别太节俭,常吃这1种食物,心脏越来越年轻!猪心是猪身体中的一部分,猪心含有蛋白质、脂肪、钙、磷、铁、维生素B1、维生素B2、维生素c以及烟酸等。……漫步加德满都(2)尼泊尔喜马拉雅徒步二、加德满都印记在北面壮丽的喜马拉雅山脉和南面潮湿的印度平原中间,镶嵌着一个只有14。7万平方公里的众神的国度,一个世界上唯一以印度教为国教的国家却拥有着全世界8座800……祝贺!山西又添两个国家级!文化和旅游部发布了关于确定第二批国家级旅游休闲街区的公告山西钟楼街岚山根运城印象步行街入选山西又添两个国家级!图源:迎泽发布钟楼步行街位于太……小米米家液晶小黑板多彩版开售,到手价69元起IT之家1月17日消息,小米米家液晶小黑板多彩版此前进行了众筹,现在该产品已正式开售,到手价69元起,比众筹贵10元。米家液晶小黑板多彩版分为10英寸和13。5英寸版,采……巽风新规则下清明冲榜活动,1分钟弄懂0充值拿节气酒攻略茅台茅台巽风茅台二十四节气酒经过了合区的重大改革,对冲榜影响最深的莫过于交易行规则,如果想要拿到酒,一定要提前弄清楚规则,才能这次清明冲榜活动收获自己应得的,才能最后拿到……内蒙古丹顶鹤落脚牧民家丹顶鹤在河边散步。呼其图摄丹顶鹤落脚牧民家的草场。呼其图摄丹顶鹤展翅翱翔。呼其图摄丹顶鹤在河边散步。呼其图摄丹顶鹤翩然起舞。呼其图摄丹顶鹤在蜿蜒的……
永劫无间,的确费电!12400配B660RTX3060Ti功从BOOXNote3到Lumi2,大屏的好处不止一点点旅游来一场说走就走的旅行吧伊藤美诚对决田志希,毫无悬念以4比0剃了对方光头,收敛了傲慢最难的NBA夺冠之路篮球天王诺维茨基深度巴雷特继续打下去,纽约尼克斯的球队领袖该易主了天文学家可能已经探测到宇宙的背景引力波业余乒乓球爱好者如何用好生胶,先练反胶后用多球才能快速提高贾静雯大女儿晒17岁庆生照,小S大女儿首送祝福,两人曾同框给iphone14有望出紫色款,网友iPhone13突然不香了中超新神奇教练出炉不败难度第1,距离国足帅位,谢晖至少还1关Steam生存游戏节必买游戏排行榜,神秘雪人在极寒之地守护宝

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找