ulimit -a //檢視
ulimit -c unlimited //設定core檔案大小不限
編譯時加入-g 選項
運作程式./a.out,如果發生斷錯誤,會在工作目錄自動生成一個core檔案
用gdb調試:gdb -c core //打開gdb調式core
file ./a.out //加載二進制
bt //列印堆棧資訊
1 ulimited -c unlimited
2 g++ -g -lpthread Test.c -o t
3 ./t 5 //産生core, 接下來進行gdb調試
4 gdb -c core
5 file ./t
6 bt // 發現并沒有列印錯誤行
注意:當執行完bt都沒有列印錯誤在哪一行時,隻有靠設定斷點來進行定位咯
l //列印代碼清單按enter //進行下面列印
b 28 // 在28行加入斷點
b 34 // 在34行加入斷點
b 43 // 在43行加入斷點
r //運作程式
c //繼續運作,發現在34行這有錯且列印
最後終于知道錯誤是if判斷這裡失誤造成!哈哈,gdb可不簡單哦。