[转帖]CoreDump设置方式
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文件
参考
-
登陆 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设置方式的更多相关文章
- 在package.json里面的script设置环境变量,区分开发及生产环境。注意mac与windows的设置方式不一样
在package.json里面的script设置环境变量,区分开发及生产环境. 注意mac与windows的设置方式不一样. "scripts": { "publish- ...
- Eclipse字符集设置方式
默认的字符集是GBK 1.windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Workspace,右侧Text fi ...
- AutoLayout的三种设置方式之——NSLayoutConstraint代码篇
AutoLayout是从IOS 6开始苹果引入来取代autoresizing的新的布局技术,该技术有三种设置方式,等下我来为大家一一叙述一下. 在说三种设置方式前,我们先简单的说一下autolayou ...
- Android进阶(二十五)setTextColor()的参数设置方式
setTextColor()的参数设置方式 查了下资料发现setTextColor()的参数可以写成以下形式: 直接使用颜色值 setTextColor(0xFF0000FF);//0xFF0000F ...
- Jvm中时区设置方式
Jvm中时区设置方式2018年08月08日 08:19:31 liumiaocn 阅读数:156更多个人分类: 编程语言版权声明:本文为博主原创文章,未经博主允许欢迎转载,但请注明出处. https: ...
- 一个在windows电脑上控制比较全的文件夹的设置方式
一个在windows电脑上控制比较全的文件夹的设置方式: 1.在桌面上创建一个新建文件夹 2.将新建文件夹重命名为 万能控制模式.{ED7BA470-8E54-465E-825C-99712043E ...
- servlet与filter的url-pattern设置方式
servlet与filter的url-pattern设置方式: 1.精确匹配: /directory/file1.jsp /directory/file2.jsp /directory/file3.j ...
- (转)setTextColor()的参数设置方式
setTextColor()的参数设置方式 分类: Android界面研究2011-12-09 23:27 11160人阅读 评论(2) 收藏 举报 查了下资料发现setTextColor()的参数应 ...
- Struts2--属性设置方式
Struts2自动获取/设置数据的方式一共分为两种 属性驱动(FieldDriven) 模型驱动(ModelDriven) 属性驱动 属性又分为两种: |- 基本数据类型 |- JavaBean属性类 ...
- 说说通信设置方式之hostonly
Vmnetcfg.exe是配置它的网络. 虚拟机,虚拟出来有两个.VMnet1和VMnet8. ************************若用hostonly,则需要将VMnet1给启用.*** ...
随机推荐
- 跟我学ModelArts丨探索ModelArts平台个性化联邦学习API
摘要:ModelArts提供了一个实现个性化联邦学习的API--pytorch_fedamp_emnist_classification,它主要是让拥有相似数据分布的客户进行更多合作的一个横向联邦学习 ...
- 源码详解数据结构Linked List
摘要:java.util.LinkedList 是 Java 集合框架中的成员之一,底层是基于双向链表实现,集合容量可动态变化的. 本文分享自华为云社区<LinkedList 源码分析>, ...
- 万字讲解WiFi为何物
摘要:WiFi是一种基于IEEE802.11系列协议标准实现的无线通信技术. 本文分享自华为云社区<[云驻共创]物联网无线短距离Wi-Fi技术专题>,作者:Mr红凯. 前言 Wi-Fi通往 ...
- 如何快速从 ETL 到 ELT?火山引擎 ByteHouse 做了这三件事
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 前言 当涉及到企业分析场景时,所使用的数据通常源自多样的业务数据,这些数据系统大多采用以行为主的存储结构,比如支付 ...
- 火山引擎 DataTester“智能发布”:覆盖产品研发、测试、上线全流程,一站式智能管理 A/B 实验
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 A/B 测试是企业产品新老功能迭代时,进行效果监测的方法.通过 A/B 测试,可以提高功能改动给产品带来正向收益的确定性. ...
- 浅谈sql执行流程、innodb架构设计、buffer pool缓冲池
一.从服务端到数据库sql执行流程: 1.SQL接口:负责处理接收到sql的语句 2.查询解析器:负责将sql变成数据库可以看懂的语言 3.查询优化器:选择最优的查询路径(针对你编写的复杂sql语句生 ...
- TCP 拥塞控制对数据延迟的影响
哈喽大家好,我是咸鱼 今天分享一篇文章,是关于 TCP 拥塞控制对数据延迟产生的影响的.作者在服务延迟变高之后进行抓包分析,结果发现时间花在了 TCP 本身的机制上面:客户端并不是将请求一股脑发送给服 ...
- 30例 | 一文搞懂python日期时间处理
前言 datetime是python的内置模块,用来处理日期和时间. 该模块常用的类有: 类名 功能说明 date 日期对象 time 时间对象 datetime 日期时间对象 timedelta 时 ...
- linux下jdk1.7、1.8版本的安装
-----1.7------ (1)解压安装包 tar -zxvf jdk-7u80-linux-x64.tar.gz (2)移动到安装目录 ...
- C++大整数类
用法 把头文件和源代码文件放在同一目录下,然后#include"INT"即可使用.你能对int类的变量进行a=2,a+=3,a%8,a--等等操作,那你就也能对INT进行.INT基 ...