使用gdb和core查詢段錯誤
阿新 • • 發佈:2018-12-16
使用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函式呼叫)