您的位置:首页 > 其它

使用core dump查看程序运行异常

2015-08-01 18:48 288 查看
Core Dump又叫核心转存。当程序在运行过程中发生异常,这时Linux系统可以把程序出错时的内存内容存储在一个core文件中,这种过程叫 Core
Dump。

Linux应用程序在运行过程中,经常会遇到Segment fault(段错误) 这样的错误。产生这样错误的原因通常有:

1.数组访问越界

2.访问空指针

3.栈溢出

4.修改只读内存

而core dump就是主要用来应付段错误的。

在Linux系统中core dump默认是关闭的,可以通过ulimit来打开/关闭core dump。

打开:ulimit -c unlimited

关闭:ulimit -c 0

使用gdb查看core文件的命令为:gdb 程序名 core文件名。

core dump的使用,以程序seg.c为例。

假设seg.c文件函数为:
void main()
{
char *ptr="1234567";
ptr[0]='4';
}


该函数可以通过编译,但由于试图修改只读内存,因此运行时会出错。

core dump的使用一般与gdb调试结合起来,因此在打开了core dump的前提下,对该文件进行调试的步骤是:

①gcc -g seg.c -o seg

②./seg #运行该程序,但系统会提示段错误(core dump)

③通过ls命令查看该目录多出的core文件,假设为core.12592

④gdb ./seg core.12592 #通过该命令可以查看core.12592文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: