Linux中的core文件简介

0    328    2

Tags:

👉 本文共约1226个字,系统预计阅读时间或需5分钟。

  在程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使用gdb来查看core文件,可以指示出导致程序出错的代码所在文件和行数。

1.core文件的生成开关和大小限制

  (1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。

  (2)使用ulimit -c filesize命令,可以限制core文件的大小(filesize的单位为kbyte)。例如使用ulimit -c 1000将会把core文件限制为1000KB。如果生成的信息超过此大小,将会被裁剪,最终生成一个不完整的core文件,在调试此core文件的时候,gdb会提示错误。

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

  (3)使用ulimit -c unlimited,则表示core文件的大小不受限制。

  (4)可以将ulimit -c unlimited写入到.bashrc中。

2.core文件生成路径

  默认为输入可执行文件运行命令的同一路径下。若系统生成的core文件不带其它任何扩展名称,则全部命名为core。新的core文件生成将覆盖原来的core文件。

  如何查询和修改Linux操作系统生成core dump文件的默认路径?

  

3.控制core文件的文件名中是否添加pid作为扩展

  这个文件/proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作为扩展。文件内容为1,表示添加 pid作为扩展名,生成的core文件格式为core.xxxx;为0则表示生成的core文件同一命名为core。

可通过以下命令修改此文件:

echo "1" > /proc/sys/kernel/core_uses_pid

4.修改core dump文件保存路径和文件名格式

  方法1:临时修改:修改/proc/sys/kernel/core_pattern文件,但/proc目录本身是动态加载的,每次系统重启都会重新加载,因此这种方法只能作为临时修改。

可以将core文件统一生成到/corefile目录下,产生的文件名为core-命令名-pid-时间戳

  方法2:永久修改:使用sysctl -w name=value命令。

5.为了更详尽的记录core dump当时的系统状态,可通过以下参数来丰富core文件的命名

6.运行示例

7. 分析调试core文件

core文件是个二进制文件,需要用相应的工具来分析程序崩溃时的内存映像。

在Linux下可以用GDB来调试core文件。

GDB中键入where,就会看到程序崩溃时堆栈信息(当前函数之前的所有已调用函数的列表(包括当前函数),gdb只显示最近几个),我们很容易找到我们的程序在最后崩溃的时候调用了core_dump_test.c 第7行的代码,导致程序崩溃。注意:在编译程序的时候要加入选项-g。您也可以试试其他命令, 如 fram、list等。更详细的用法,请查阅GDB文档。

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

17 − 16 =

 

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部