linux下生成core dump文件方法及设置(转载)

core dump的概念:

A core dump is the recorded state of the working memory of a computer program at a specific time, generally when the program has terminated abnormally (crashed). In practice, other key pieces of program state are usually dumped at the same time, including the processor registers, which may include the program counter and stack pointer, memory management information, and other processor and operating system flags and information. The name comes from the once-standard memory technology core memory. Core dumps are often used to diagnose or debug errors in computer programs.

On many operating systems, a fatal error in a program automatically triggers a core dump, and by extension the phrase “to dump core” has come to mean, in many cases, any fatal error, regardless of whether a record of the program memory is created.

生成 core dump 文件步骤

在linux平台下,设置core dump文件生成步骤如下:

1. 打开core 开关

命令行方式(暂时有效)

ulimit -c 0         ## 不产生core文件. 如果结果为0,说明当程序崩溃时,系统并不能生成core dump。
ulimit -c 1024      ## 设置core文件最大为1024k  
ulimit -c unlimited ## 不限制core文件大小  

修改配置文件方式(永久有效)

vim /etc/security/limits.conf

# 去掉 soft core 0 一行前面的注释 并将0改为 unlimited

或者

vim /etc/profile

添加内容
ulimit -c unlimited

2. 修改core产生路径和命名规则

默认情况下,core dump生成的文件名为core,而且就在程序当前目录下。新的core会覆盖已存在的core。通过修改/proc/sys/kernel/core_uses_pid文件,可以将进程的pid作为作为扩展名,生成的core文件格式为core.xxx,其中xxx即为pid (PS:此步骤可省略)

通过修改/proc/sys/kernel/core_pattern可以控制core文件保存位置和文件格式。

  • 命令行方式
# 例如:将所有的core文件生成到/corefile目录下,文件名的格式为core-命令名-pid-时间戳. 
  • 修改配置文件方式
vim /etc/sysctl.conf
## 最后增加一行
kernel.core_pattern = /data/core/core-%e-%p-%t # 也可以使用相对路径,需要确保目录已经存在
kernel.core_uses_pid=0 # 不在文件名后加上pid

可以将core文件统一生成到/cdata/core目录下,产生的文件名为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 添加命令名

3. 重启时生效

重启后生效,或者执行sysctl -p立即生效。

4 测试是否生效

执行命令kill -s SIGSEGV $$ ,它会kill掉当前shell,可以看到/cdata/core下生成了一个core文件,说明已经设置成功。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值