使用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函數調用)


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com