背景

有时当我们在Linux下编程,程序运行时会出现以下提示:

Segmentation fault (core dumped)

然后,程序崩溃,退出运行。发生这一问题的原因往往是程序中指针不规范使用导致内存越界访问、堆栈溢出、多线程编程出错等问题。
这时,如果我们编译时在命令行加入 -g 选项,就会在出现上述错误时自动于当前目录生成core.xxxxxx文件,我们可以利用这一文件查询导致上述错误的代码位置。

介绍

core文件,又称核心文件、核心转储(core dump),是操作系统在进程收到某些信号而终止运行时,将此时进程地址空间的内容以及有关进程状态的其他信息写出的一个磁盘文件。这种信息往往用于调试。1
因此,当我们的程序因为编程时的“不小心”导致出现段地址错误时,就可以利用core文件信息进行错误查找,方便程序员及时修正。

使用

  1. 首先,要检查系统是否开启了core文件生成功能:
    在终端输入以下命令:

ulimit -a

如果显示core file的size为0,说明没有开启core文件生成功能,输入以下命令开启:

ulimit -c ulimited

当然,也可以输入一个数字指定大小,但一般不建议,因为一旦文件写满可能会遗漏错误信息。

  1. 为gcc/g++命令增加 -g 调试选项
    这样,当程序一旦发生上述错误时,就会生成core文件,将错误信息写入

  2. core文件生成后,并不能直接打开,需要使用以下命令查看信息:

gdb ./out core.26591

./out为编译生成的可执行文件,core.26591要替换成可执行文件目录下对应的core文件文件名,执行后即可看到相应信息,追踪产生segmenttation fault的位置及对应函数调用情况:

输入以下命令行:

(gdb)> bt

可以查看发生段错误时进程具体执行到了函数的哪一行,以及每一个函数调用时传递的参数等信息,帮助程序员查错!


  1. 来源:百度百科 ↩︎

Linux下core文件介绍与使用方法相关推荐

  1. linux core文件默认位置,linux下core文件

    linux下core文件 参考:http://www.cnblogs.com/li-hao/archive/2011/09/25/2190278.html 并整合其他参考资料 在程序不寻常退出时,内核 ...

  2. Linux下core文件调试方法收藏

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://littlewhitetwo.blogbus.com/logs/35544335.html 在程序不寻常退出时,内核会在 ...

  3. Linux下core文件调试方法

    core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (Linux中如果内存越界会收到SIG ...

  4. linux打开core文件,[转载]linux下core文件设置与查看

    程序异常推出时,内核会生成一个core文件(是内存映像以及调试信息).可以通过使用gdb来查看core文件,指示出导致程序出错的代码所在的文件和行数. 1.查看系统中core文件生成的开关是否打开 1 ...

  5. core文件 linux,Linux 下core文件的使用

    转储文件(core dump)本来是在程序运行出错的时候产生的.转储文件记录了进程出错时的内存映像,以及进程执行的上下文环境,如寄存器的值等.它的主要用途是在程序运行崩溃时记录下进程的瞬时情况,从而为 ...

  6. linux 关闭core,linux下core文件的控制

    linux下默认是关闭core文件的生成,要想生成core文件: 一 core文件的生成 1.bsh 修改/etc/profile文件,该文件应该有类似配置:ulimit -c 20000,注释掉该配 ...

  7. linux下core文件无法生成排查思路

    0.进程的RLIMIT_CORE或RLIMIT_SIZE被设置为0.使用getrlimit和ulimit检查修改. 使用ulimit -a 命令检查是否开启core文件生成限制 如果发现-c后面的结果 ...

  8. linux下7z文件的解压方法

    ubuntu apt-get install p7zip-full 7z x filename.7z centos yum install p7zip -y 7za x filename.7z

  9. [Linux]linux下7z文件的解压方法

    ubuntu apt-get install p7zip-full 7z x filename.7z centos yum install p7zip -y 7za x filename.7z

最新文章

  1. mysql中数据表如何关联_mysql 如何导入/导出2个关联表中的数据
  2. 数据结构与算法 -- 链表
  3. apache php mysql下载_linux+apache+php+mysql 安装
  4. 恋舞ol服务器维护中,【公告】《恋舞OL》5月20日更新维护公告
  5. l28n和开发版_Atmel之SAM4S Xplained开发板评测(二)
  6. php sql 条件拼组_sql where查询拼接技巧
  7. x86软件如何在win32下使用_「译」JVM是如何使用那些你从未听过的x86魔幻指令实现String.compareTo的...
  8. python 2 与 python 3 —— 转义及编码(\u, \x)
  9. 解决filezilla中无法显示中文的文件名
  10. windows 内核进程的优先级_华为鸿蒙 OS 轻量内核设计理念与关键特性
  11. IIS7.5 安装设置-Sql Sever2008安装设置-移动端设置等必读
  12. MySQL 启动服务和登陆参数
  13. iOS维码的生成和扫描
  14. Java程序员面试常见问题
  15. python-视频爬取到本地
  16. 中国象棋对局软件设计(四)[完]
  17. 一篇不错的网文 闻鸡起舞早耕耘,天道酬勤有志人
  18. 【渝粤题库】陕西师范大学209008 教师伦理学 作业
  19. scrapy html页面加载未完成,Scrapy与scrapy-splash框架快速加载js页面
  20. 四种方法搞定电脑数据备份

热门文章

  1. hive 数据类型 java_Hive数据类型
  2. 计算机组成原理 汇编语言
  3. 最新YGBOOK小说站源码/全自动采集+已修BUG
  4. 使用CoreImage实现素描滤镜
  5. MFC应用程序设计(第二版)学习笔记
  6. EN 50332手机Type-C数字音频输出测试
  7. YOLOv7来临:论文解读附代码解析
  8. 帆软BI产品FineBI下一个强硬对手——Metabase
  9. 基于python的咖啡数据集分析
  10. 全新安装Windows10系统(PE下)