core dump
2015-01-11 09:22
597 查看
http://blog.sina.com.cn/s/blog_67c294ca01014a4v.html
什么叫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:
2. 写一个死循环程序:
3. 前台运行这个程序,然后在终端键入Ctrl-C或Ctrl-\:
ulimit命令改变了Shell进程的Resource Limit,a.out进程的PCB由Shell进程复制而来,所以也具有和Shell进程相同的Resource Limit值,这样就可以产生Core Dump了。
什么叫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了。
相关文章推荐
- linux下如何打开core dump
- 学会用core dump调试程序错误(转)
- gdb设置core dump的总结
- Linux下如何生成core dump文件
- 又是打印log错误造成的core dump
- linux下生成core dump文件方法及设置
- 【Core Dump】核心转存 故障分析
- core dump
- [2]Core Dump调试应用程序
- linux下生成core dump文件方法及设置
- select的fd超过1024将会非常危险------FD_SET导致core dump
- core dump[打开及调试]
- c++ 文件读写 core dump
- qt程序崩溃生成core dump
- linux下core dump
- 太搞了,GDB Core Dump
- Core Dump?! --http://docs.huihoo.com/gnu/linux/core.html
- Linux Core Dump 配置与调试
- 关于一些core dump的问题,makefile以及gdb的使用问题
- 几种常见的 core dump