天天看點

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.通過分析堆棧,最終确定錯誤的位置

繼續閱讀