一.启动 core dump
默认情况下,core dump 是关闭状态的,因为 core size 被设置为0。可通过指令 ulimit -c 查看当前值。如下:

设置core文件的最大大小为一个指定的值(单位K),或者unlimited。

那么便打开了core dump。
但是,通过在shell输入ulimit -c 指令的方式来修改,仅对当前shell有效。如果想要每次开机都自动设置,可以修改/etc/proifle文件,在文件的最后添加 ulimit -c 1024(这里设置core文件的大小为1024K) 。
core文件生成的位置默认是可执行文件所在的位置,名称默认为core,其位置和名称是可以设置的。通过下面方法设置到自己指定的目录。

当进程奔溃时,将会在/opt/corefile/目录下生成core dump文件。
二编写测试的程序
hello.c
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("hello word\n");
int *p = NULL;
*p = 666;
return 0;
}
gcc编译成可执行文件hello后,运行hello

通过gdb指令查看程序奔溃的地方

进入gdb调试后,输入命令:bt 查看进程结束的地方。

本文介绍如何在Linux环境下通过修改ulimit-c指令及配置文件来开启coredump功能,并设置core文件的大小与生成位置。同时,通过一个示例程序演示了如何使用GDB进行程序崩溃点的定位。
5824

被折叠的 条评论
为什么被折叠?



