首页 > 代码库 > gdb调试core文件
gdb调试core文件
什么是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文件输出
当获得了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.ofoo.o:foo.c gcc -Wall -g -c foo.cclean: rm -rf foo.o foo
运行foo之后出现core.14263,分析该core文件:
【参考文献】
1、http://www.cnblogs.com/lbsx/archive/2010/10/09/1846535.html
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。