linux中core dump开启使用教程【转】
转自:http://www.111cn.net/sys/linux/67291.htm
一、什么是coredump
我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要满足一定的条件呢?下面会分析)会产生一个叫做core的文件。
通常情况下,core文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,我们可以理解为是程序工作当前状态存储生成第一个文件,许多的程序出错的时候都会产生一个core文件,通过工具分析这个文件,我们可以定位到程序异常退出的时候对应的堆栈调用等信息,找出问题所在并进行及时解决。
二、cored dump开启
执行ulimit –c 检查是否开启core dump,若结果为0,则认为没有启用core dump文件的生成,需要打开core dump 。开启core dump的方法有三种,一种是临时启用,两种是永久启用。
临时启用
方法1(ulimit命令法)
执行如下命令:
ulimit -c 1024
或
ulimit -c unlimited
上例中,前一种是限制core dump的文件大小不超过1024K,后一种是不限制core
dump文件的大小,现在的程序占用内存都比较凶猛,以前写C程序需要计算内存的时代已经过去了。如果不加限制,可能一个core文件,几个G就出去了。所以最好还是限制该在小。
永久启用的两个方法:
方法二(profile文件修改法)
打开/etc/profile文件,增加如下以下并生使其生效:
ulimit -S -c unlimited > /dev/null 2>&1
注:如果该文件有ulimit -S -c 0 > /dev/null 2>&1 一行,需要先将该行注释掉。设置完成后通过执行 source /etc/profile 生效。
方法三(修改/etc/security/limits.conf文件)
找到【* soft core 0】行,将其修改为如下内容:
这个方法可以针对指定用户或用户组打开core dump,如设置成【* soft core 10485760】,即core dump文件大小是10G 。
需要注意的是此处的设置和方法二中的设置是冲突的,在其中一处设置即可,此处建议用第三种方法设置,因为其可以针对不同的用户和组进行设置,更加灵活。
注:上面三种方法设置都不需重启机器,需要做的是退出终端并重新连接,重启需要core dump的程序即可。
三、修改core dump文件格式
定制core的路径,名称格式,通过修改下面两个配置:
再说下第一句配置,/proc/sys/kernel/core_uses_pid 如果这个文件的内容被配置成1,那么即使core_pattern中没有设置%p,最后生成的core dump文件名仍会加上进程ID。
需要注意的是,由于/proc下的配置是即时生效的,reboot后,之前的配置就会失效。所以可以增加如下配置到/etc/sysctl.conf文件中,如下:
保存后,执行sysctl -p生效。
注:需要注意的是,上面配置的corefiles该目录必须有写权限,否则无法生成core dump文件,可以通过下面的命令创建:
| 代码如下 | |||||
|
|||||
| 代码如下 | |||||
|
|||||
| 代码如下 | |||||
|
|||||
| 代码如下 | |||||
|
|||||
linux中core dump开启使用教程【转】的更多相关文章
- linux下core dump
1.前言 一直在从事linux下后台开发,经常与core文件打交道.还记得刚开始从事linux下开发时,程序突然崩溃了,也没有任何日志.我不知所措,同事叫我看看core,我却问什么是core,怎么看. ...
- Linux 设置core dump
Linux 设置core dump
- linux下core dump【总结】
1.前言 一直在从事linux下后台开发,经常与core文件打交道.还记得刚开始从事linux下开发时,程序突然崩溃了,也没有任何日志.我不知所措,同事叫我看看core,我却问什么是core,怎么看. ...
- linux (core dump)调试
转自 http://www.cnblogs.com/hazir/p/linxu_core_dump.html Linux Core Dump 当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内 ...
- linux c: core dump
1. core dump文件系统设置 http://www.cnblogs.com/no7dw/archive/2013/02/18/2915819.html 编译时需要输入-g才会生成coredum ...
- linux 平台core dump文件生成
1. 在终端中输入ulimit -c 如果结果为0,说明当程序崩溃时,系统并不能生成core dump. root@hbg:/# ulimit -c0root@hbg:/# 2.使用ulimit -c ...
- 【Linux】Core dump故障分析
引入: Q:如果一个程序运行3天后才会出错,这个时候难道需要我们一直用GDB调试程序3天吗? A:答案当然是否定的. 我们有更厉害的工具--Core dump 一.Coredump定义 Core Du ...
- Linux上Core Dump文件的形成和分析
原文: http://baidutech.blog.51cto.com/4114344/904419 Core,又称之为Core Dump文件,是Unix/Linux操作系统的一种机制,对于线上服务而 ...
- Linux 打开core dump功能
系统打开core dump功能 在终端中输入命令 ulimit -c ,输出的结果为 0,说明默认是关闭 core dump 的,即当程序异常终止时,也不会生成 core dump 文件: 使用命令 ...
随机推荐
- BZOJ5092 分割序列(贪心)
设si为该序列的异或前缀和,则显然相当于求Σmax{sj+sj^si} (i=1~n,j=0~i).从高位到低位考虑,如果该位si为1,无论sj怎么填都是一样的:如果该位si为0,则sj该位应尽量为1 ...
- Oracle 修改dmp的表空间
1.百度下载 UltraEdit 并安装 2.打开程序,文件-->打开-->找到dmp 文件太大会提示,选择第一个默认,确定 3.按CTRL+H 转成十六进制编辑 4.例如:dmp里面 ...
- 【刷题】洛谷 P4234 最小差值生成树
题目描述 给定一个标号为从 \(1\) 到 \(n\) 的.有 \(m\) 条边的无向图,求边权最大值与最小值的差值最小的生成树. 输入输出格式 输入格式: 第一行两个数 \(n, m\) ,表示图的 ...
- 【BZOJ1914】数三角形(组合数,极角排序)
[BZOJ1914]数三角形(组合数,极角排序) 题面 BZOJ权限题 良心洛谷 题解 这种姿势很吼啊,表示计算几何啥的一窍不通来着. 题目就是这样,正难则反,所以我们不考虑过原点的三角形, 反过来, ...
- POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和)
POJ.3321 Apple Tree ( DFS序 线段树 单点更新 区间求和) 题意分析 卡卡屋前有一株苹果树,每年秋天,树上长了许多苹果.卡卡很喜欢苹果.树上有N个节点,卡卡给他们编号1到N,根 ...
- java 操作命令行
目的:用java进行调用ab压测 window: cmd ab.exe linux: sh ab.sh 命令: abs -n 500 -c 10 https://www.baidu.com/ > ...
- PHP正则表达式基本语法
本章主要学习正则表达式的基本语法: 正则表达式就是一个匹配的模式,正则表达式本身也就是一个字符串(有一些语法规则,特殊符号组成) 正则表达式这个字符串一定要在对应的函数中使用才有意义(分割,替换函数结 ...
- Python【面向对象编程】
#1.python中,类名首字母都大写#2.在python3中,经典类和新式类没有任何区别#3.在python2中,经典类和新式类的区别主要体现在多继承上,经典类是深度优先,新式类是广度优先#4.在p ...
- golang 中 sync包的 WaitGroup
golang 中的 sync 包有一个很有用的功能,就是 WaitGroup 先说说 WaitGroup 的用途:它能够一直等到所有的 goroutine 执行完成,并且阻塞主线程的执行,直到所有的 ...
- python——type()、metaclass元类和精简ORM框架
1.type()函数 if __name__ == '__main__': h = hello() h.hello() print(type(hello)) print(type(h)) Hello, ...