core dump

来源:互联网 发布:业务员销售软件 编辑:程序博客网 时间:2024/05/20 01:36

什么叫Core Dump ?

---------------------------

 当一个进程要异常终止时,可以选择把进程的用户空间内存数据全部保存到磁盘上,文件名通常是core,这叫做Core Dump。

进程异常终止通常是因为有Bug,比如非法内存访问导致段错误,事后可以用调试器检查core文件以查清错误原因,这叫做Post-mortemDebug

 一个进程允许产生多大的core文件取决于进程的Resource Limit(这个信息保存在PCB中)。默认是不允许产生core文件的,因为core文件中可能包含用户密码等敏感信息,不安全。

 

在开发调试阶段可以用ulimit命令改变这个限制,允许产生core文件。

 

开启Core Dump并测试

---------------------------

1. ulimit命令改变Shell进程的Resource Limit,允许core文件最大为1024K:

$ ulimit -c 1024

2. 写一个死循环程序:

#include <unistd.h>

int main(void)

{

 while(1);

 return 0;

}

3. 前台运行这个程序,然后在终端键入Ctrl-C或Ctrl-\:
$ ./a.out(按Ctrl-C)

$ ./a.out(按Ctrl-\)Quit (core dumped)

$ ls -l core*-rw------- 1 akaedu akaedu 147456 2008-11-05 23:40 core

 ulimit命令改变了Shell进程的Resource Limit,a.out进程的PCB由Shell进程复制而来,所以也具有和Shell进程相同的Resource Limit值,这样就可以产生Core Dump了。

 

 

 

 

原创粉丝点击