https://www.jianshu.com/p/f5c3134072d2

本文讲述利用coredump调试时,对coredump信息相关的设置方式。

设置core文件大小

  • 列出所有资源的限制

    #ulimit -a
    1240
  • 查看core file size

    #ulimit -c

    这里对于 core file size:

    unlimited:core文件的大小不受限制
    0:程序出错时不会产生core文件
    1024:代表1024k,core文件超出该大小就不能生成了
  • 设置core文件大小

    #ulimit -c fileSize

    注意:尽量将这个文件大小设置得大一些,程序崩溃时生成Core文件大小即为程序运行时占用的内存大小。可能发生堆栈溢出的时候,占用更大的内存

查看CoreDump文件路径配置

  • 方法1:

    #cat /proc/sys/kernel/core_pattern
  • 方法2:

    #/sbin/sysctl kernel.core_pattern

修改core dump文件路径

  • 方法1-临时修改

    修改 /proc/sys/kernel/core_pattern 文件,但/proc目录本身是动态加载的,每次系统重启都会重新加载,因此这种方法只能作为临时修改。

    例如:

    #echo ‘/var/log/%e.core.%p’ > /proc/sys/kernel/core_pattern
  • 方法2:永久修改

    使用 sysctl -w name=value 命令。

    例如:

    #sysctl -w kernel.core_pattern=/var/log/%e.core.%p

另外,为了更详尽的记录core dump当时的系统状态,可通过以下参数来丰富core文件的命名:

%% 单个%字符
%p 所dump进程的进程ID
%u 所dump进程的实际用户ID
%g 所dump进程的实际组ID
%s 导致本次core dump的信号
%t core dump的时间 (由1970年1月1日计起的秒数)
%h 主机名
%e 程序文件名

测试是否能生成core文件

首先,向目标进程发送信号产生coredump

#kill -s SIGSEGV $$

这里,使用当前进程的进程号,即 $$ 。

其次,根据前面配置的文件路径,查看对应目录下是否生成了coredump文件

参考

  • https://www.cnblogs.com/xiaodoujiaohome/p/6222895.html

  • https://www.jianshu.com/p/dc7e7bd7d1a2

  • linux下生成core dump文件方法及设置

    登陆 LINUX 服务器,任意位置键入
    echo "ulimit -c 1024" >> /etc/profile
    退出 LINUX 重新登陆 LINUX
    键入 ulimit -c
    如果显示 1024 那么说明 coredump 已经被开启。
    1024 限制产生的 core 文件的大小不能超过 1024kb,可以使用参数unlimited,取消该限制
    ulimit -c unlimited . 设置 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" > core_pattern
    将会控制所产生的 core 文件会存放到 /corefile 目录下,产生的文件名为 core- 命令名 -pid- 时间戳 ulimit -c unlimited
    echo "/tmp/core-%e-%p" > /proc/sys/kernel/core_pattern
    gcc -o main -g a.c
    gdb main /tmp/core-main-10815
  • https://blog.csdn.net/u011417820/article/details/71435031

    1.设置core文件大小
    列出所有资源的限制: ulimit -a
    1240
    ulimit -a.png
    或者查看core file size: ulimit -c core file size:
    unlimited:core文件的大小不受限制
    0:程序出错时不会产生core文件
    1024:代表1024k,core文件超出该大小就不能生成了
    设置core文件大小: ulimit -c fileSize 注意:
    尽量将这个文件大小设置得大一些,程序崩溃时生成Core文件大小即为程序运行时占用的内存大小。可能发生堆栈溢出的时候,占用更大的内存 2.设置core文件的名称和文件路径
    默认生成路径:输入可执行文件运行命令的同一路径下
    默认生成名字:默认命名为core。新的core文件会覆盖旧的core文件
    a.设置pid作为文件扩展名 1:添加pid作为扩展名,生成的core文件名称为core.pid
    0:不添加pid作为扩展名,生成的core文件名称为core
    修改 /proc/sys/kernel/core_uses_pid 文件内容为: 1
    修改文件命令: echo "1" > /proc/sys/kernel/core_uses_pid
    或者
    sysctl -w kernel.core_uses_pid=1 kernel.core_uses_pid = 1
    b. 控制core文件保存位置和文件名格式 修改文件命令: echo "/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
    或者:
    sysctl -w kernel.core_pattern=/corefile/core-%e-%p-%t kernel.core_pattern = /corefile/core-%e-%p-%t
    可以将core文件统一生成到/corefile目录下,产生的文件名为core-命令名-pid-时间戳
    以下是参数列表:
    %p - insert pid into filename 添加pid(进程id)
    %u - insert current uid into filename 添加当前uid(用户id)
    %g - insert current gid into filename 添加当前gid(用户组id)
    %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 添加导致产生core的命令名 3.测试是否能生成core文件
    kill -s SIGSEGV $$
    查看/corefile目录下是否生成了core文件
  • https://blog.csdn.net/yasi_xi/article/details/16118349

    最近遇到一个问题,SUSE Linux系统中的某个应用程序异常而最终引发了系统core dump,但遗憾的时在系统重启后并没有找到core文件,影响了我们对问题的分析定位。
    
    经过分析发现系统默认的core文件生成路径是/var/logs,但/var/logs目录并非系统自带的,系统初始安装默认自带的是/var/log,最终导致该系统出现core dump后并没能生成core文件,因此如何查询和修改系统默认的core dump文件生产路径呢?方法如下:
    
    一. 查询core dump文件路径:
    方法1:
    # cat /proc/sys/kernel/core_pattern 方法2:
    # /sbin/sysctl kernel.core_pattern 二. 修改core dump文件路径:
    方法1:临时修改:修改/proc/sys/kernel/core_pattern文件,但/proc目录本身是动态加载的,每次系统重启都会重新加载,因此这种方法只能作为临时修改。
    /proc/sys/kernel/core_pattern
    例:echo ‘/var/log/%e.core.%p’ > /proc/sys/kernel/core_pattern 方法2:永久修改:使用sysctl -w name=value命令。
    例:/sbin/sysctl -w kernel.core_pattern=/var/log/%e.core.%p 为了更详尽的记录core dump当时的系统状态,可通过以下参数来丰富core文件的命名:
    %% 单个%字符
    %p 所dump进程的进程ID
    %u 所dump进程的实际用户ID
    %g 所dump进程的实际组ID
    %s 导致本次core dump的信号
    %t core dump的时间 (由1970年1月1日计起的秒数)
    %h 主机名
    %e 程序文件名

[转帖]CoreDump设置方式的更多相关文章

  1. 在package.json里面的script设置环境变量,区分开发及生产环境。注意mac与windows的设置方式不一样

    在package.json里面的script设置环境变量,区分开发及生产环境. 注意mac与windows的设置方式不一样. "scripts": { "publish- ...

  2. Eclipse字符集设置方式

    默认的字符集是GBK 1.windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Workspace,右侧Text fi ...

  3. AutoLayout的三种设置方式之——NSLayoutConstraint代码篇

    AutoLayout是从IOS 6开始苹果引入来取代autoresizing的新的布局技术,该技术有三种设置方式,等下我来为大家一一叙述一下. 在说三种设置方式前,我们先简单的说一下autolayou ...

  4. Android进阶(二十五)setTextColor()的参数设置方式

    setTextColor()的参数设置方式 查了下资料发现setTextColor()的参数可以写成以下形式: 直接使用颜色值 setTextColor(0xFF0000FF);//0xFF0000F ...

  5. Jvm中时区设置方式

    Jvm中时区设置方式2018年08月08日 08:19:31 liumiaocn 阅读数:156更多个人分类: 编程语言版权声明:本文为博主原创文章,未经博主允许欢迎转载,但请注明出处. https: ...

  6. 一个在windows电脑上控制比较全的文件夹的设置方式

    一个在windows电脑上控制比较全的文件夹的设置方式: 1.在桌面上创建一个新建文件夹 2.将新建文件夹重命名为  万能控制模式.{ED7BA470-8E54-465E-825C-99712043E ...

  7. servlet与filter的url-pattern设置方式

    servlet与filter的url-pattern设置方式: 1.精确匹配: /directory/file1.jsp /directory/file2.jsp /directory/file3.j ...

  8. (转)setTextColor()的参数设置方式

    setTextColor()的参数设置方式 分类: Android界面研究2011-12-09 23:27 11160人阅读 评论(2) 收藏 举报 查了下资料发现setTextColor()的参数应 ...

  9. Struts2--属性设置方式

    Struts2自动获取/设置数据的方式一共分为两种 属性驱动(FieldDriven) 模型驱动(ModelDriven) 属性驱动 属性又分为两种: |- 基本数据类型 |- JavaBean属性类 ...

  10. 说说通信设置方式之hostonly

    Vmnetcfg.exe是配置它的网络. 虚拟机,虚拟出来有两个.VMnet1和VMnet8. ************************若用hostonly,则需要将VMnet1给启用.*** ...

随机推荐

  1. Blog Statistics Dec 1, 2021 - Dec 1, 2022

    1. Overview Data Date: Dec 1, 2021 - Dec 1, 2022 Number of articles: 51 All Platform Total Visits: 3 ...

  2. MindSpore!这款刚刚开源的深度学习框架我爱了!

    [摘要] 本文主要通过两个实际应用案例:一是基于本地 Jupyter Notebook 的 MNIST 手写数据识别:二是基于华为云服务器的 CIFAR-10 图像分类,对开源框架 MindSpore ...

  3. 视频编码耗时长、编码帧发送失败…DVPP视频编码问题典型案例分析

    摘要:本期就分享几个关于DVPP视频编码问题的典型案例,并给出原因分析及解决方法 本文分享自华为云社区<DVPP媒体数据处理视频编码问题案例>,作者:昇腾CANN. DVPP(Digita ...

  4. 数据库面试要点:关于MySQL数据库千万级数据查询和存储

    摘要:百万级.千万级数据处理,核心关键在于数据存储方案设计,存储方案设计的是否合理,直接影响到数据CRUD操作.总体设计可以考虑一下几个方面进行设计考虑: 数据存储结构设计:索引设计:数据主键设计:查 ...

  5. vue2.x老项目typescript改造过程经验总结

    前言: 关于Vue2.x 的TS改造,其实没有啥好说的. 对于vue-cli项目来说,从新跑一遍 vue create xxx-project ,选择Manually select features ...

  6. 乐高式扩展:在Seal软件供应链防火墙中轻松集成代码规范工具

    上个月,Seal 软件供应链防火墙 v0.2(以下简称"Seal")正式发布,这一版本实现了可扩展架构,用户可以根据自身需求插件式集成原生或第三方解决方案,灵活扩展扫描能力. 在前 ...

  7. Hugging Face 入选 Time《时代周刊》2023 全球前 100 最具影响力的公司

    喜报 Hugging Face 入选 Time<时代周刊>2023 全球前 100 最具影响力的公司 继续为梦想努力 继续为开源贡献 榜单链接: https://time.com/100c ...

  8. Go--记录下踩map的坑

    这两天新调个接口的时候,一直提示签名错误,但所需的时间,工号,token都是对的,完全没有头绪,卡了两天后,终于找到原因了 原因是我的校验信息,是要将时间,工号,token封装在一起成字符串,然后用m ...

  9. SpringBoot 项目实战 | 瑞吉外卖 Day02

    该系列将记录一份完整的实战项目的完成过程,该篇属于第二天 案例来自B站黑马程序员Java项目实战<瑞吉外卖>,请结合课程资料阅读以下内容 该篇我们将完成以下内容: 完善登陆系统 新增员工 ...

  10. 汇编 | DosBox初步接触的一些初始化设置(窗口大小 & 默认命令)

    如何在win10 64位下搭载汇编环境请参考这篇博客:Here 学习汇编时下载了 DosBox,然而窗口小到眼睛酸痛.解决方案如下. Updata:VSC 插件使用方法,Here 1.点开配置文件 配 ...