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