1、生成core文件系统配置
使用ulimit -c命令可以查看当前系统对于core文件的配置,0表示不生成core文件;不为0的数字a表示限制core文件大小不超过a,单位是k;unlimited则表示不限制core文件大小。
ulimit -c // 查看当前系统设置
ulimit -c 4096 // 修改系统设置,限制core文件大小不超过4096kb
ulimit -c unlimited // 修改系统设置,不限制core文件大小
测试虚拟机的配置为限制core文件不超过1024kb:
2、core文件生成路径配置
使用sysctl命令或者查看配置文件均可获取当前系统core文件生成路径:
方法一:sysctl kernel.core_pattern
方法二:cat /proc/sys/kernel/core_pattern
修改core文件路径的办法:
(1)执行 sysctl kernel.core_pattern=core路径 命令进行修改,重启后失效
(2)在/etc/sysctl.conf中添加kernel.core_pattern=core路径;然后执行sysctl -p加载
core名称本身可以附加以下信息:
%p | 产生core文件进程ID |
%g | 产生core文件实际组ID |
%s | 产生core文件信号 |
%t | 产生core文件时间戳 |
%h | 产生core文件主机名 |
%e | 产生core文 程序文件名 |
%u | 产生core文件实际用户ID |
下面使用临时修改的方式修改core文件默认路径,并添加core文件的时间信息:
3、代码测试
将以下代码保存为coretest.c:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
char *p = NULL;
*p = 1;
}
执行gcc -g coretest.c -o main命令生成可执行程序,直接执行./main运行可执行程序:
4、core文件调试
使用gdb命令选择core文件和源程序进行调试,可以定位到程序出错的位置:
版权声明:本文为cesheng3410原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。