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文件,可以通过下面的命令创建:

 代码如下  
 

1 user soft core 1024
或@group soft core 1024

 代码如下  
 

1 echo 1 >/proc/sys/kernel/core_uses_pid
echo ‘/corefiles/core-%e-%p-%t‘ > /proc/sys/kernel/core_pattern
这里先说下后一参数的配置说明:
2 %% 单个%字符
%p 所dump进程的进程ID
%u 所dump进程的实际用户ID
%g 所dump进程的实际组ID
%s 导致本次core dump的信号
%t core dump的时间 (由1970年1月1日计起的秒数)
%h 主机名
%e 程序文件名

 代码如下  
 

1 kernel.core_uses_pid = 1
kernel.core_pattern = /corefiles/core-%e-%p-%t

 代码如下  
 

1 # mkdir /corefiles
# chmod 777 /corefiles

原文地址:https://www.cnblogs.com/sky-heaven/p/8426929.html

时间: 2024-12-16 04:27:16

linux中core dump开启使用教程【转】的相关文章

linux下core dump【总结】

1.前言 一直在从事linux下后台开发,经常与core文件打交道.还记得刚开始从事linux下开发时,程序突然崩溃了,也没有任何日志.我不知所措,同事叫我看看core,我却问什么是core,怎么看.同事鄙视的眼神,我依然在目.后来学会了从core文件中分析原因,通过gdb看出程序挂再哪里,分析前后的变量,找出问题的原因.当时就觉得很神奇,core文件是怎么产生的呢?难道系统会自动产生,可是我在自己的linux系统上面写个非法程序测试,并没有产生core问题?这又是怎么回事呢?今天在ngnix的

linux c: core dump

1. core dump文件系统设置 http://www.cnblogs.com/no7dw/archive/2013/02/18/2915819.html 编译时需要输入-g才会生成coredump文件: gcc -g -o test test.c core文件的生成开关和大小限制: 1)使用ulimit -c 命令可查看core文件的生成开关.若结果为0,则表示关闭了此功能,不会生成core文件. 2)使用ulimit -c filesize命令,可以限制core文件的大小 ulimit

Linux上Core Dump文件的形成和分析

原文: http://baidutech.blog.51cto.com/4114344/904419 Core,又称之为Core Dump文件,是Unix/Linux操作系统的一种机制,对于线上服务而言,Core令人闻之色变,因为出Core的过程意味着服务暂时不能正常响应,需要恢复,并且随着吐Core进程的内存空间越大,此过程可能持续很长一段时间(例如当进程占用60G+以上内存时,完整Core文件需要15分钟才能完全写到磁盘上),这期间产生的流量损失,不可估量. 凡事皆有两面性,OS在出Core

Linux 打开core dump功能

系统打开core dump功能 在终端中输入命令 ulimit -c ,输出的结果为 0,说明默认是关闭 core dump 的,即当程序异常终止时,也不会生成 core dump 文件: 使用命令 ulimit -c unlimited 来开启 core dump 功能,并且不限制 core dump 文件的大小: 如果需要限制文件的大小,将 unlimited 改成你想生成 core 文件最大的大小,注意单位为 blocks(KB): 以上命令只会对当前的终端环境有效,如果想需要永久生效,方

Linux中的syslog 入门学习教程

syslog是linux系统中默认的日志守护进程,默认的syslog配置文件是/etc/syslog.conf文件.程序.守护进程和内核提供了访问系统的日志信息.任何希望生成日志信息的程序都可以向syslog接口呼叫产生该信息. 几乎所有的网络设备都可以通过syslog协议,将日志信息通过udp方式传送到远端的服务器,而远端的服务器通过syslogd监听udp的514端口,并且根据syslog.conf配置文件中的配置进行处理,接受访问系统的日志信息,把指定的事件写入到特定的文件中,供后台数据库

linux中crontab工具开启服务

首先确认服务器是否开启任务计划服务,只有root用户才能对crond服务进行开启和关闭[[email protected] ~]# service crond statuscrond (pid  1758) is running...[[email protected] ~]# service crond stopStopping crond:                                            [  OK  ][[email protected] ~]# su

Core Dump总结

Core Dump总结 查看现在系统dump core的情况 ulimit -c 结果表示core文件的大小.如果显示0,则不会dump core,显示unlimited不限制core文件大小 打开dump core 只要指定core文件大小不是0,系统就会打开dump core的功能.通过命令在~/.bash_profic中添加 ~~~bash ulimit -S -c unlimited > /dev/null 2>&1 ~~~ 就可以指定dump core了. 指定core文件包

Linux中的进程管理

什么是进程,顾名思义嘛!就是正在进行的程序,在Linux中,只要开启服务就会在后台对应的有了进程.那么进程管理究竟对于我们的日常运维工作有什么用呢? 主要作用有三点: 首先,最重要的是查看服务器健康状态 第二,查看系统中运行的所有进程 第三,杀死进程 我们用到进程最重要的作不就是用就是用来查看服务器的健康状态,做运维的不就是为了保证服务器能够一直这么正常运行吗? ① top命令 -->查看服务器健康状态 终端直接输入top,如图: 这里面最重要的就是前面的那5行,其中几个比较重要的参数如下: l

【调试】Core Dump是什么?Linux下如何正确永久开启?

内容简介 [调试]Core Dump是什么?Linux下如何正确永久开启? Core Dump是什么?Linux下如何正确永久开启? Core Dump是什么? Core Dump乍听之下很抽象. 当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成"核心转储"). 我们可以认为Core Dump是"内存快照",但实际上,除了内存信息之外,还有些关键的程序运行状态也会同时dump