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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 之前初步了解过Windows 下强大的调试工具WinDbg,也简单的整理了一个初级的文章《使用WinDbg、Map...
    SunnyZhang的IT世界阅读 9,221评论 0 1
  • 程序调试的基本思想是“分析现象->假设错误原因->产生新的现象去验证假设”这样一个循环过程,根据现象如何假设错误原...
    Manfred_Zone阅读 16,649评论 0 26
  • 调试前准备 获取进程的内核转储(core dump) why:最大好处是,其保存了问题发生时的状态。记录进程当前状...
    Gitlusen阅读 4,470评论 0 2
  • 1、文件和目录: # cd /home 进入 '/home' 目录 # cd .. ...
    XDgbh阅读 6,161评论 0 1
  • 中午问儿子,今天下午去不去补课?儿子爽快的说去!下午上班前,我替儿子把双氧水装进书包里,防止走的时候遗忘。定好了闹...
    志郁阅读 3,544评论 2 4