Linux core文件详解

来源:互联网 发布:数据运营驱动力包括 编辑:程序博客网 时间:2024/06/08 10:04

原文地址:

http://blog.csdn.net/skylinesky/article/details/7647098


1、什么是linux core文件

在一个程序崩溃是,它一般会在特定目录(一般是当前目录下)生成一个core文件。core文件仅仅是一个内存映像(同时加上调试信息),主要用来程序调试。

有人可能要问了,gdb不是可以直接调试吗?“加上断点,想怎么调怎么调”。这话倒是不错,但是假如有个几万行的代码,只给出一个segment fault错误,怎么调?不能进去一行一行的调试吧。core文件就能很好的解决这个问题,调试core文件,使用bt或where命令,可以直接显示程序出错的地方,以及调用该函数的其他函数。

2、怎样产生core文件

直接写一个有错误的程序,运行即可。示例程序如下:

[cpp] view plaincopy
  1. #include<stdio.h>  
  2.   
  3. void f(float x, float y)  
  4. {  
  5.     printf("%f\n", x/y);  
  6. }  
  7.   
  8. int main(int argc, char *argv[])  
  9. {  
  10.     f(5,0);  
  11.       
  12.     return 0;  
  13. }  


直接运行怎么没有呢?别急,先看看你的系统设置,使用ulimit 命令(这里有介绍),点击打开链接

可以看到core大小为0,所以不能生成core文件,将core文件大小变大就可以,ulimit -c unlimited,在运行如下图:




3、怎样调试

为了能够调试编译程序时,必须加上编译信息。使用命令gdb -c core;在使用where或者bt就可以显示出程序出错的地方。如下图:



原创粉丝点击