1. 程式人生 > >使用gdb和core查詢段錯誤

使用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函式呼叫)