如果一个程序运行3天后才会出错,这个时候
难道需要我们一直用GDB调试程序3天吗?
这个时候我们就需要使用到core dump:
1、Core Dump又叫核心转存。当程序在运行过程中发生异常, 这时Linux系统可以把程序出错时的内存内容存储在一个core文件
中, 这种过程叫Core Dump.
2、那么Core dump用来对付什么样的错误呢?主要是段错误(segment fault)...
一般的表现是:a.数组访问越界 b.访问空指针 c.栈溢出 d.修改只读内存
3.在linux系统中,默认是关闭core dump功能的,但是可以通过ulimit命令打开/关闭
打开:ulimit -c unlimited
关闭:ulimit -c 0
4.发生core dump之后,可以使用gdb进行查看core文件的内容,定位出程序出错的位置
用法:gdb 程序名 core文件名
gdb ./test core.122223
5、完整范例:
gdb -c core.id 程序名
输入:where 。可以知道由谁调用,哪行被down了在哪个函数里。
或者输入bt