天天看点

Linux下调试段错误(Segment fault)方法

1.查看当前linux是否打开core,方法是执行命令

ulimit -a

一般会出现如下的结果

core file size        (blocks, -c) 0

0表示当前core被关闭

2.执行命令取消core限制

ulimit -c unlimited

3.重新查看,core是否已经打开

core file size        (blocks, -c) unlimited

命令结果里面core所在行的最后一个unlimited表示core已经无限制了

4.直接运行出现段错误的程序(如test),待程序异常退出后,当前目录下会生成一个core.xxxx的文件,其中xxxx一般为数字。

5.使用gdb查看出错时的堆栈,方法是:

gdb test core.xxxx

6.最后在gdb里面敲击命令bt即可看出产生段错误时的堆栈情况

如:

#15 0x080535d0 in proSNMPhost (arg=0x0) at discover.c:1508

7.通过分析堆栈,最终确定错误的位置

继续阅读