linux下生成core dump文件方法及设置
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
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-时间戳.
echo "/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
- 修改配置文件方式
vim /etc/sysctl.conf
## 最后增加一行
kernel.core_pattern = /data/core/core-%e-%p-%t
可以将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 命令
立即生效
更多推荐
所有评论(0)