使用gdb和core查找段错误

使用gdb和core查找段错误


1. 当一个程序出现段错误时,会出现以下提示:

Segmentation fault (core dumped)

core 指该程序运行时,进程空间的内存分布
dumped 表示内核已经把core抛出
通常,出现段错误提示时程序运行目录下应该自动生成一个core文件用来存储内核抛出的core,但是,由于linux环境一般默认设置core文件限制为0,所以一般情况下无法生成core文件。

2. 查看core文件大小限制:

ulimit -c

3. 将其修改为无限制:

ulimit -c unlimited

这里写图片描述
这样设置之后,若发生段错误就会有core文件生成了。
使用 -g 选项编译程序后,运行程序得到core文件,配合gdb就可以找到段错误的位置了

4. 运行命令

gdb a.out core

5. 示例

  • 代码:

这里写图片描述

  • 改程序运行发生段错误:

这里写图片描述

  • 做以下操作:

这里写图片描述
经过上图所示步骤,可以轻易得到段错误发生在 test.c 文件的第 5 行(位于test函数下,被main函数调用)

猜你喜欢

转载自blog.csdn.net/oaix101125/article/details/79016705