core文件作用
通常在 Linux 下遇到程序异常退出或者中止,我们都会使用 core 文件进行分析,其中包含了程序运行时的内存,寄存器,堆栈指针等信息,格式为 ELF ,可以理解是程序工作当前状态转储成一个文件,通过工具分析这个文件,我们可以定位到程序异常退出或者终止时相应的堆栈调用等信息,为解决问题提供帮助。
如何生成分析core文件
相关配置
- 检查core文件是否打开:ulimit -a
- 阻止core文件生成:ulimit -c 0
- 设置core文件生成:在.bash_profile中添加ulimit -c unlimited,再执行source
.bash_profile使其生效 - 设置生成core文件的路径与文件名:
- 执行echo “1” > /proc/sys/kernel/core_uses_pid(可以控制产生的core文件的文件名中是否添加pid作为扩展,如果添加则文件内容为1,否则为0)
- 执行echo “/var/core-%e-%p-%t” >
/proc/sys/kernel/core_pattern(可以设置格式化的core文件保存位置或文件名) - 用# sysctl –p
/etc/sysctl.conf,是修改马上生效。
core_pattern的命名参数如下:
%c 转储文件的大小上限
%e 所dump的文件名
%g 所dump的进程的实际组ID
%h 主机名
%p 所dump的进程PID
%s 导致本次coredump的信号
%t 转储时刻(由1970年1月1日起计的秒数)
%u 所dump进程的实际用户ID