gdb 查看coredump文件

linux编程中往往遇到segment fault段错误,定位到错误位置对解决问题有很大帮助,如果要生成core文件,需要打开core dump功能
1)代码打开

 struct rlimit rlmt;
    if (getrlimit(RLIMIT_CORE, &rlmt) == -1) {
        return -1;
    }
    printf("Before set rlimit CORE dump current is:%d, max is:%d\n", (int)rlmt.rlim_cur, (int)rlmt.rlim_max);

    rlmt.rlim_cur = (rlim_t)CORE_SIZE;
    rlmt.rlim_max  = (rlim_t)CORE_SIZE;

    if (setrlimit(RLIMIT_CORE, &rlmt) == -1) {
        return -1;
    }

    if (getrlimit(RLIMIT_CORE, &rlmt) == -1) {
        return -1;
    }
    printf("After set rlimit CORE dump current is:%d, max is:%d\n", (int)rlmt.rlim_cur, (int)rlmt.rlim_max);

2)命令行打开

ulimit -c 1024

下面展示一段出现指针非法访问程序

   int *ptr = NULL;
    *ptr = 10;

编译时候,打开-g选项

gcc -g xx.c

运行可执行文件后(在linux系统下),在当前执行路径下生成core.xxxx文件,实用gdb调试,调试命令

 gdb a.out core.30377 #a.out 为可执行文件

输入bt命令,可以定位到段错误位置信息


5721585732776_.pic.jpg

你可能感兴趣的:(gdb 查看coredump文件)