Linux生成core文件相关配置,core文件调试示例

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文件和源程序进行调试,可以定位到程序出错的位置:

猜你喜欢

转载自blog.csdn.net/cesheng3410/article/details/130102431