所谓核心转储文件是内含进程终止时内存映像的一个文件。
产生条件:特定的信号会引发进程创建一个核心转储文件并终止运行。
     包括哪些特定信号,请参见http://man7.org/linux/man-pages/man7/signal.7.html
          关于core文件更详细内容http://man7.org/linux/man-pages/man5/core.5.html

接下来我们说一些关于core文件常见的情况和问题。

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

输入ulimit -a命令我们可以看到第一行core文件大小为0,即我们关闭了core文件产生,若不为0,就打开了呗。或ulimit -c只显示core文件大小。
        使用ulimit -c filesize命令,可以限制core文件的大小(filesize的单位为kbyte)。如果生成的信息超过此大小,将会被裁剪,最终生成一个不完整的core文件。在调试此core文件的时候,gdb会提示错误。若ulimit -c unlimited,则表示core文件的大小不受限制。
如果想让修改永久生效,则需要修改配置文件,如 .bash_profile、/etc/profile或/etc/security/limits.conf。
 
2.core文件的生成路径和名称
core文件默认认生成路径是进程的工作目录中,默认名为core。若系统生成的core文件采用默认的名core,则新的core文件生成将覆盖原来的core文件。
1)/proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作为扩展。文件内容为1,表示添加pid作为扩展名,生成的core文件格式为core.xxxx;为0则表示生成的core文件同一命名为core。
可通过以下命令修改此文件:
echo "1" > /proc/sys/kernel/core_uses_pid
2)/proc/sys/kernel/core_pattern可以控制core文件保存位置和文件名格式。(从Linux2.6版本才有,之前版本可能没有此文件)
可通过以下命令修改此文件:
echo "/corefile/core-%e-%p-%t" >/proc/sys/kernel/core_pattern,可以将core文件统一生成到/corefile目录下,产生的文件名为core-命令名-pid-时间戳
以下是参数列表:
%p - insert pid into filename 添加pid
%u - insert current uid into filename 添加当前uid
%g - insert current gid into filename 添加当前gid
%s - insert signal that caused the coredump into the filename 添加导致产生core的信号
%t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间
%h - insert hostname where the coredump happened into filename 添加主机名
%e - insert coredumping executable name into filename 添加命令名
注意若你指定的文件夹不存在,则core文件不会生成。
3.core文件的查看
gdb [exec file] [core file]
如:
gdb ./test test.core
在进入gdb后, 用bt命令查看backtrace以检查发生程序运行到哪里, 来定位core文件->行.
GDB中键入where,也会看到程序崩溃时堆栈信息(当前函数之前的所有已调用函数的列表(包括当前函数),gdb只显示最近几个)
咳,天下文章一大抄
参考 http://blog.chinaunix.net/uid-21411227-id-1826911.html
http://www.nginx.cn/1521.html
http://www.cnblogs.com/xuxm2007/archive/2010/10/22/1858095.html
       强制进程产生coredump,检测死锁以及进程快照   http://blog.chinaunix.net/uid-23629988-id-175809.html
---------------------
作者:二手码农
来源:CSDN
原文:https://blog.csdn.net/hu_jiacheng/article/details/40950471
版权声明:本文为博主原创文章,转载请附上博文链接!

最新文章

  1. 如何将已部署在ASM的资源迁移到ARM中
  2. python-语句
  3. JDK&JRE&JVM
  4. Atiti  attilax主要成果与解决方案与案例rsm版 v2
  5. ecshop /includes/modules/payment/alipay.php SQL Injection Vul
  6. Free Slideshow, Gallery And Lightboxes Scripts
  7. Effective Java 48 Avoid float and double if exact answers are required
  8. iOS视频录制、压缩导出、取帧
  9. ThreadPoolExecutor参数解析
  10. 济南最新公交线路一览(BRT)
  11. EasyUI - Tooltip 提示控件
  12. Spring之IOC讲解
  13. SerializableObj
  14. Django学习-13-simple_tag使用
  15. 微信小程序发送短信验证码完整实例
  16. CF452F Permutations/Luogu2757 等差子序列 树状数组、Hash
  17. Oracle 自定义函数、存储过程
  18. c++——智能指针学习(unique_ptr)
  19. MarkdownPad 2在win10上安装及破解(含安装包)
  20. day8-python函数

热门文章

  1. python之路 内置函数,装饰器
  2. loadrunder之脚本篇——接口传参为本地文件
  3. iOS 几种常用的 crash log 崩溃信息调试方法
  4. 阿拉伯数字转中文大写数字的JS
  5. debian下使用dynamic printk分析usb转串口驱动执行流程
  6. USB引脚及定义
  7. Qt构造函数的参数:QObject *parent = Q_NULLPTR
  8. RHCE学习笔记 管理1 (第三~五章)
  9. linux运维面试题1
  10. 使用shell自动备份数据库