使用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文件函数为:
该函数可以通过编译,但由于试图修改只读内存,因此运行时会出错。
core dump的使用一般与gdb调试结合起来,因此在打开了core dump的前提下,对该文件进行调试的步骤是:
①gcc -g seg.c -o seg
②./seg #运行该程序,但系统会提示段错误(core dump)
③通过ls命令查看该目录多出的core文件,假设为core.12592
④gdb ./seg core.12592 #通过该命令可以查看core.12592文件
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文件
相关文章推荐
- Java_Web三大框架之Hibernate+jsp+selvect+HQL注册用户
- 经验分享:多屏复杂动画CSS技巧三则
- 解决 Boot Camp 虚拟机升级到 Windows 10 后 Parallels Desktop 不能识别的问题
- Longest Common Prefix
- 归并排序模板
- 十五天精通WCF——终结篇 那些你需要注意的坑
- 南沙政府应急系统之GIS一张图(arcgis api for flex)讲解(一)GIS一张图的系统开发环境以及flexviewer框架
- hdu 1556
- 乘积最大
- 做嵌入式经典网站!(转)
- 关于Javascript变量类型的一些注意点
- CSS中的属性选择符和结构化伪类
- C语言面试题
- 解析xml
- Leetcode Isomorphic Strings
- c# 反射类字段
- POJ 2239 Selecting Courses
- POJ 1741 树上的点分治
- Android如何实现程序按下两次返回键退出应用程序?
- 异常处理中的问题