玩转centos 下的core 文件

玩转centos 下的core 文件

------------------------------------------------------------
author: hjjdebug
date: 2024年 03月 06日 星期三 12:38:35 CST
description:  玩转centos 下的core 文件
------------------------------------------------------------
一: 准备一个会产生core 的文件

# cat main.cpp
int main(void)
{
    char *p=0;
    *p=123;
    return 0;
}

编译并执行之
# ./temp 
段错误(吐核)
但是查看当前目录却没有生成core文件
$ ls
main.cpp  main.o  Makefile  temp  temp.pro

二: 原因查找:
#  ulimit -a |grep core
core file size          (blocks, -c) 0

core file size 为0 是不会生成core 文件的


三: 设置core size 为unlimited(不限制大小)
# ulimite -c unlimited

重新执行文件
# ./temp 
段错误(吐核)
[root@ct50 ~/temp]# ls
core.11538  main.cpp  main.o  Makefile  temp  temp.pro

即可生成core 文件, 但它是带pid 的, 每次都会生成不同的core 文件,不方便查找且浪费空间.

怎样 把core 文件名称修改为core, 去掉pid ?

这需要修改系统参数. 可以借用sysctl 命令. 当然也可以不用,灵活掌握最重要!

sysctl 命令简单介绍:
Linux中的sysctl支持需要Procfs,
可以使用sysctl读取和写入sysctl数据。 可用参数是/proc/sys/下列出的参数。
sysctl -a 可列出所有系统参数, 配合grep 可以顾虑出感兴趣的参数
sysctl -w 可以修改参数的值
例如:
sysctl -w net.core.rmem_max=26214400  //修改网络内核读缓存的大小
临时修改也可以直接修改/proc/sys 下对应的参数.

如果想使修改在下次开机时生效, 可以直接编辑/etc/sysctl.conf文件
将内核参数写入配置文件中,需要使用sysctl -p命令重新加载配置文件使参数生效。

四: 查看当前core 的生成状态:
$sysctl -a | grep kernel|grep core
kernel.core_pattern = |/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e %P %I %h
kernel.core_pipe_limit = 4
kernel.core_uses_pid = 1   //我们关心的是这个

可见core 是使用了pid 的
把它临时改为不使用pid, 进入/proc/sys/kernel 目录
查看:
$ls core*
core_pattern  core_pipe_limit  core_uses_pid
直接查看值也可以
$ cat core_uses_pid
1

五: 修改内核参数
$ echo 0 >  core_uses_pid
用sysctl -w 也可以,这里就忽略了.

六: 再次查看:
$ cat core_uses_pid
0
用sysctl 查看看
$ sysctl -a |grep kernel|grep core
kernel.core_pattern = |/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e %P %I %h
kernel.core_pipe_limit = 4
kernel.core_uses_pid = 0
可见它们结果是一致的.
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值