伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

Linux core dump有什么用?

来源:本站原创 浏览:86次 时间:2022-10-28
进程崩溃时,Linux会将崩溃前进程的内存状态保存在core文件里,就像保存了案发现场的照片,可以帮助开发人员找到事故原因,修复程序。本文用简单的例子讲解如何根据core文件,定位进程崩溃的原因。
首先编写C++代码,定义一个空指针,对空指针所指向的内存区域写,发生段错误

coretest01.cpp







#include<stddef.h>int main(){        int *p = NULL;        *p = 10;}
编译出可执行文件coretest01,运行打印出core dumped,应该出现core文件。但是在目录下并没有产生core文件,这是系统设置禁止了文件产生。用ulimit -a查看系统对core文件的设置core file size设置是0,也就是不允许core文件产生。修改配置,改为unlimited,对大小不做限制。执行coretest01,产生了core文件,后面的数字是崩溃进程的进程号。查看core文件信息使用gdb命令,[root@webserver code]# gdb coretest01 core.1953gdb下执行bt和where可以看见令程序崩溃的代码位置,但是现在只能看见main函数,看不见其它具体信息。这是因为编译代码时没有加入调试信息,g++加入调试信息的参数是-g可以看到加入调试信息后,core文件能准确的告知出错代码的文件和在第几行,第5行正是代码对空指针指向区域写操作的地方实际生产系统往往很多可执行文件在同一个目录,aserver bserver......等等。当出现core文件时,我们首先要判断core文件由哪个可执行文件产生,然后才能排查问题。命令file core可以帮助我们判断core是哪个可执行文件产生的。再写个代码文件coretest02.cpp






#include<stddef.h>int main(){        int *p2 = NULL;        *p2 = 10;}
编译生成可执行文件coretest02,运行两个可执行文件,会出现两个core文件file core.* 可以正确指出core文件出自哪个可执行文件(无论可执行文件是什么,哪怕是java,Python,都是一样的操作),然后gdb 可执行文件 core.*,可以查看错误原因。


  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net