Core Dump技术介绍
在开发和使用Linux程序时,我们最怕的就是莫过于程序莫明其妙的当掉了,虽然对整个系统来说是没有什么影响,但对于程序使用尤其是程序开发者来说,这显然是难以忍受的,有这样一种技术,操作系统把程序当掉时的内容保存起来,让我们在程序开发时作一个调试参考。1、什么是core dump?Core,即core memory, 指由一系列小当纳圈形的磁性材料组成的存储器,这里不过是沿用了这一称呼,
·
在开发和使用Linux程序时,我们最怕的就是莫过于程序莫明其妙的当掉了,虽然对整个系统来说是没有什么影响,但对于程序使用尤其是程序开发者来说,这显然是难以忍受的,有这样一种技术,操作系统把程序当掉时的内容保存起来,让我们在程序开发时作一个调试参考。
1、
什么是core dump?
Core,即core memory,
指由一系列小当纳圈形的磁性材料组成的存储器,这里不过是沿用了这一称呼,而dump就是堆放的意思。core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump.
2、
如何打开core dump支持?
有的操作系统并没有默认打开core dump支持,需要用ulimit -c unlimited语句进行设置,core文件生成的位置一般在程序运行的当前目录下,文件名为core.进程号(当然不同的系统也许有所不同,可以查看相手册对路径和文件名进行设置).
3、
Core dump的使用方法
首先应该在用gcc进行编译时选择-g选项,以便起动debug支持,生成可执行文件时ex,./ex运行可执行文件,如果程序当掉,则会生成一个core文件,假设为core.1568,则gdb ex core.1568进入gdb,然后再用where命令进行查看即可。
4、
举例说明
假设我的代码main.c为:
#include
<
stdio.h
>
int div( int i, int j)
... {
return i / j;
}
int main()
... {
int i = 2;
int j = 0;
printf("%d ", div(i, j));
return 0;
}
int div( int i, int j)
... {
return i / j;
}
int main()
... {
int i = 2;
int j = 0;
printf("%d ", div(i, j));
return 0;
}
5、
其它-用kill命令查询信号的名称和值
有时候core dump显示的结果是一些信号的值,这时需要对这些值进行查询,这时要用到kill命令。
Kill –l :列出所有信号的名称和值
Kill –l val:查询值为val的信号名称
Kill –l signame: 查询signame信号的值。
本文总结了core dump技术的基本使用方法,并进行了举例,对于初学Linux程序开发者来说,多多少少会有点帮助。
更多推荐
已为社区贡献1条内容
所有评论(0)