码迷,mamicode.com
首页 > 数据库 > 详细

gdb调试core文件

时间:2014-08-06 22:18:42      阅读:282      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   io   strong   文件   

什么是Core Dump?
Core的意思是内存, Dump的意思是扔出来, 堆出来.开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如core.进程号的文件生成, 这个文件便是操作系统把程序down掉时的内存内容扔出来生成的, 它可以做为调试程序的参考.
core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump。

 

为什么没有core文件生成呢?
有时候程序down了, 但是core文件却没有生成. core文件的生成跟你当前系统的环境设置有关系, 可以用下面的语句设置一下, 然后再运行程序便成生成core文件.
ulimit -c unlimited
core文件生成的位置一般于运行程序的路径相同, 文件名一般为core.进程号

当ulimit -c出来的如果为0,说明关闭core文件输出

bubuko.com,布布扣

当获得了core文件以后,就可以利用命令gdb进行查找,参数一是应用程序的名称,参数二是core文件。

例子:

源代码:
#include <stdio.h>

static void sub(void);

int main(void)
{
        sub();
            return 0;
}

static void sub(void)
{
    int *p = NULL;

    /* derefernce a null pointer, expect core dump. */
    printf("%d", *p);
}

Makefile:
foo:foo.o
        gcc -o foo foo.o

foo.o:foo.c
        gcc -Wall -g -c foo.c

clean:
        rm -rf foo.o foo

运行foo之后出现core.14263,分析该core文件:

bubuko.com,布布扣

 

【参考文献】

1、http://www.cnblogs.com/lbsx/archive/2010/10/09/1846535.html

gdb调试core文件,布布扣,bubuko.com

gdb调试core文件

标签:style   blog   http   color   使用   io   strong   文件   

原文地址:http://www.cnblogs.com/gsblog/p/3895613.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!