CoreDump设置方式

本文讲述利用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 程序文件名
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 155,457评论 4 357
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 65,943评论 1 285
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 105,327评论 0 236
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,307评论 0 201
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,630评论 3 283
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,114评论 1 202
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,514评论 2 305
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,227评论 0 193
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,859评论 1 234
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,186评论 2 238
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,741评论 1 255
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,087评论 2 248
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,614评论 3 228
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,926评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,630评论 0 190
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,117评论 2 261
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,076评论 2 257

推荐阅读更多精彩内容

  • 在Linux下程序不寻常退出时,内核会在当前工作目录下生成一个core文件(是一个内存映像,同时加上调试信息)。使...
    随风化作雨阅读 42,134评论 2 15
  • 一、core 文件的生成 C程序因为segment fault(段错误)崩溃时,如果系统core dump功能是打...
    zhuweipu阅读 2,320评论 0 2
  • core dump:(内存快照)在linux中当程序发生异常中止或者崩溃时,操作系统会将程序当时的内存状况记录下来...
    zs0zrc阅读 1,479评论 0 1
  • 工具:GDB 分析 导致进程异常退出的这两类情况: 第一类:向进程发送信号导致进程异常退出; 第二类:代码错误导致...
    董春磊阅读 1,836评论 0 1
  • 什么是coredump Coredump叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照。操作系统在程...
    java菜阅读 4,104评论 0 4