关于coredump文件生成与查看
为什么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文件生成与查看相关推荐
- coredump文件是如何生成的
目录 一.coredump 文件生成过程 二.coredump文件生成原理 1. 信号处理 do_signal() 2. 生成 coredump 文件 三.生产环境应该打开 coredump 功能吗? ...
- coredump文件的生成以及如何调试coredump文件?
生成coredump文件的相关配置 1. 首先通过 ulimit -a 命令,查看是否允许coredump文件生成; 如下图所示,core文件大小限制为0,即:不允许core文件生成 2. 使用 ul ...
- Linux调试——gdb调试器的简单使用调试coredump文件
文章目录 一.背景 二.gdb的指令与使用 1.gdb的基本指令. 2.gdb指令的简单使用 1.进入gdb模式 2.实例说明 三.调试coredump文件 前提:本质上是在调试程序崩溃之后的内存镜像 ...
- 【C/C++基础进阶系列】实战记录 -- Dump 文件生成与分析
[C/C++基础进阶系列]实战记录 -- Dump 文件生成与分析 [1]Windows 端 Dump 文件的捕获与分析 [1.1]添加 Windows 端 Dump 捕获的代码 代码下载,windo ...
- visual studio 怎么生成coredump文件_coredump详解
一,什么是coredump 我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要 ...
- 【Junos】手动生成Core-dump文件
常规情况下,当JUNOS进程异常或内核崩溃时,将自动生成一个Core-dump文件,有时故障排查的需要下,需手动的去生成一个Core-dump文件. 以NSD进程手动生成Core-dump为例: {p ...
- Macbook 终端Terminal下如何查看文件生成日期和修改日期
有时候在用vim命令修改配置文件时,不确定是否被修改,为了与旧版本比较,最好查一下文件生成和修改日期,方法如下: $ GetFileInfo my_file.py file: "/Users ...
- java core 生成路径_core文件生成和路径设置
在程序崩溃时,内核会生成一个core文件,即程序最后崩溃时的内存映像,和程序调试信息. 之后可以通过gdb,打开core文件察看程序崩溃时的堆栈信息,可以找出程序出错的代码所在文件和函数. 1.cor ...
- 我的docker随笔24:docker产生coredump文件
docker容器中运行 C++ 程序,有时崩溃,但没日志,也没提示.之前掌握了 coredump 调试,本文在容器中尝试. 操作 先查看core大小: $ ulimit -a | grep core ...
最新文章
- 0311互联网新闻 | 知乎增加“视频回答”入口;苹果将最早于今年年底生产AR设备...
- (二)boost库之字符串格式化
- 2020年CNCF和开源项目开发速度
- 数据结构与算法-索引1909
- c语言webbrowser加载html,向WebBrowser中添加静态HTML,执行脚本,载入HTML
- integer expression expected或者unary operator expected
- 初识——信息安全等级保护
- 爆一个VS2015 Update1更新带来的编译BUG【已有解决方案】
- java Http消息传递之POST和GET两种方法--通过实用工具类来获取服务器资源
- 湖南省委短信平台改造方案
- sgx芯片服务器,英特尔SGX概述:SGX内部实现分析研究(part1)
- 破解 --- apk文件解析
- android 滑动取值_Android中滑屏实现
- Unity 调用Android手机触屏事件
- ios获取系统自带的文字蓝色色值
- TPS和QPS的区别
- CSR8670 学习记录1——开始
- 【案例】js 计算日期之间的天数
- html2canvas的下载地址
- 第十届中国云计算大会·中国站:展望未来十年科技走向
热门文章
- 【MySQL】数据库事务处理---MySQL
- python3一爬虫库url_python3爬虫之Urllib库(一)
- wireshark 开始抓包
- linux7系统怎么启动ftp,CentOS 7上启动 vsftp报错解决一例
- php下载数组里的图片,php 读取txt文件中的内容,转换成数组,根据URL将图片下载到本地(curl爬取)...
- ajax常见特效,用ajax实现正在载入的特效-Ajax编程
- mysql+存储器_mysql内存储器计算公式_mysql
- PSIM软件中 Simplified C Block模块 和 C Block模块区别
- SpringMVC中转发和重定向
- 数据结构-链表的删除和添加