为什么80%的码农都做不了架构师?>>>   

博客园闪存首页新随笔联系管理订阅随笔- 711  文章- 0  评论- 230
Linux core 文件介绍
1. core文件的简单介绍
在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。

2. 开启或关闭core文件的生成
用以下命令来阻止系统生成core文件:
ulimit -c 0
下面的命令可以检查生成core文件的选项是否打开:
ulimit -a
该命令将显示所有的用户定制,其中选项-a代表“all”。

也可以修改系统文件来调整core选项
在/etc/profile通常会有这样一句话来禁止产生core文件,通常这种设置是合理的:
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
但是在开发过程中有时为了调试问题,还是需要在特定的用户环境下打开core文件产生的设置
在用户的~/.bash_profile里加上ulimit -c unlimited来让特定的用户可以产生core文件
如果ulimit -c 0 则也是禁止产生core文件,而ulimit -c 1024则限制产生的core文件的大小不能超过1024kb

3. 设置Core Dump的核心转储文件目录和命名规则
/proc/sys/kernel/core_uses_pid可以控制产生的core文件的文件名中是否添加pid作为扩展,如果添加则文件内容为1,否则为0
/proc/sys/kernel/core_pattern可以设置格式化的core文件保存位置或文件名,比如原来文件内容是core-%e
可以这样修改:
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 添加命令名

4. 使用core文件
在core文件所在目录下键入:
gdb -c core
它会启动GNU的调试器,来调试core文件,并且会显示生成此core文件的程序名,中止此程序的信号等等
如果你已经知道是由什么程序生成此core文件的,比如MyServer崩溃了生成core.12345,那么用此指令调试:
gdb -c core MyServer
以下怎么办就该去学习gdb的使用了

5. 一个小方法来测试产生core文件
直接输入指令:
kill -s SIGSEGV $$

6. 为何有时程序Down了,却没生成 Core文件。

Linux下,有一些设置,标明了resources available to the shell and to processes。 可以使用

#ulimit -a 来看这些设置。 (ulimit是bash built-in Command)

-a     All current limits are reported
              -c     The maximum size of core files created
              -d     The maximum size of a process鈥檚 data segment
              -e     The maximum scheduling priority ("nice")
              -f     The maximum size of files written by the shell and its children
              -i     The maximum number of pending signals
              -l     The maximum size that may be locked into memory
              -m     The maximum resident set size (has no effect on Linux)
              -n     The maximum number of open file descriptors (most systems do not allow this value to be set)
              -p     The pipe size in 512-byte blocks (this may not be set)
              -q     The maximum number of bytes in POSIX message queues
              -r     The maximum real-time scheduling priority
              -s     The maximum stack size
              -t     The maximum amount of cpu time in seconds
              -u     The maximum number of processes available to a single user
              -v     The maximum amount of virtual memory available to the shell
              -x     The maximum number of file locks

从这里可以看出,如果 -c是显示:core file size          (blocks, -c)

如果这个值为0,则无法生成core文件。所以可以使用:

#ulimit -c 1024 或者 #ulimit -c unlimited 来使能 core文件。

如果程序出错时生成Core 文件,则会显示Segmentation fault (core dumped)。

7. Core Dump的核心转储文件目录和命名规则:
/proc/sys/kernel/core_uses_pid可以控制产生的core文件的文件名中是否添加pid作为扩展,如果添加则文件内容为1,否则为0

转载于:https://my.oschina.net/3pgp/blog/189936

关于coredump文件生成与查看相关推荐

  1. coredump文件是如何生成的

    目录 一.coredump 文件生成过程 二.coredump文件生成原理 1. 信号处理 do_signal() 2. 生成 coredump 文件 三.生产环境应该打开 coredump 功能吗? ...

  2. coredump文件的生成以及如何调试coredump文件?

    生成coredump文件的相关配置 1. 首先通过 ulimit -a 命令,查看是否允许coredump文件生成; 如下图所示,core文件大小限制为0,即:不允许core文件生成 2. 使用 ul ...

  3. Linux调试——gdb调试器的简单使用调试coredump文件

    文章目录 一.背景 二.gdb的指令与使用 1.gdb的基本指令. 2.gdb指令的简单使用 1.进入gdb模式 2.实例说明 三.调试coredump文件 前提:本质上是在调试程序崩溃之后的内存镜像 ...

  4. 【C/C++基础进阶系列】实战记录 -- Dump 文件生成与分析

    [C/C++基础进阶系列]实战记录 -- Dump 文件生成与分析 [1]Windows 端 Dump 文件的捕获与分析 [1.1]添加 Windows 端 Dump 捕获的代码 代码下载,windo ...

  5. visual studio 怎么生成coredump文件_coredump详解

    一,什么是coredump 我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要 ...

  6. 【Junos】手动生成Core-dump文件

    常规情况下,当JUNOS进程异常或内核崩溃时,将自动生成一个Core-dump文件,有时故障排查的需要下,需手动的去生成一个Core-dump文件. 以NSD进程手动生成Core-dump为例: {p ...

  7. Macbook 终端Terminal下如何查看文件生成日期和修改日期

    有时候在用vim命令修改配置文件时,不确定是否被修改,为了与旧版本比较,最好查一下文件生成和修改日期,方法如下: $ GetFileInfo my_file.py file: "/Users ...

  8. java core 生成路径_core文件生成和路径设置

    在程序崩溃时,内核会生成一个core文件,即程序最后崩溃时的内存映像,和程序调试信息. 之后可以通过gdb,打开core文件察看程序崩溃时的堆栈信息,可以找出程序出错的代码所在文件和函数. 1.cor ...

  9. 我的docker随笔24:docker产生coredump文件

    docker容器中运行 C++ 程序,有时崩溃,但没日志,也没提示.之前掌握了 coredump 调试,本文在容器中尝试. 操作 先查看core大小: $ ulimit -a | grep core ...

最新文章

  1. 0311互联网新闻 | 知乎增加“视频回答”入口;苹果将最早于今年年底生产AR设备...
  2. (二)boost库之字符串格式化
  3. 2020年CNCF和开源项目开发速度
  4. 数据结构与算法-索引1909
  5. c语言webbrowser加载html,向WebBrowser中添加静态HTML,执行脚本,载入HTML
  6. integer expression expected或者unary operator expected
  7. 初识——信息安全等级保护
  8. 爆一个VS2015 Update1更新带来的编译BUG【已有解决方案】
  9. java Http消息传递之POST和GET两种方法--通过实用工具类来获取服务器资源
  10. 湖南省委短信平台改造方案
  11. sgx芯片服务器,英特尔SGX概述:SGX内部实现分析研究(part1)
  12. 破解 --- apk文件解析
  13. android 滑动取值_Android中滑屏实现
  14. Unity 调用Android手机触屏事件
  15. ios获取系统自带的文字蓝色色值
  16. TPS和QPS的区别
  17. CSR8670 学习记录1——开始
  18. 【案例】js 计算日期之间的天数
  19. html2canvas的下载地址
  20. 第十届中国云计算大会·中国站:展望未来十年科技走向

热门文章

  1. 【MySQL】数据库事务处理---MySQL
  2. python3一爬虫库url_python3爬虫之Urllib库(一)
  3. wireshark 开始抓包
  4. linux7系统怎么启动ftp,CentOS 7上启动 vsftp报错解决一例
  5. php下载数组里的图片,php 读取txt文件中的内容,转换成数组,根据URL将图片下载到本地(curl爬取)...
  6. ajax常见特效,用ajax实现正在载入的特效-Ajax编程
  7. mysql+存储器_mysql内存储器计算公式_mysql
  8. PSIM软件中 Simplified C Block模块 和 C Block模块区别
  9. SpringMVC中转发和重定向
  10. 数据结构-链表的删除和添加