1. 程式人生 > 實用技巧 >core dump

core dump

core dump

當程式執行的過程中異常終止或崩潰,作業系統會將程式當時的記憶體狀態記錄下來,儲存在一個檔案中(core檔案),這種行為就叫做 Core Dump 或者叫做 ‘核心轉儲’,利用 coredump 可以幫助我們快速定位程式崩潰位置ulimit -c檢視是否開啟,如果輸出為0,則沒有開啟。需要執行ulimit -c unlimited開啟core dump功能。開啟後執行ulimit -c輸出unlimited在配置檔案中設定core檔案的名稱和生成路徑。沒有進行設定的話,預設生成的core檔案不帶其它任何副檔名稱,全部命名為core。新的core檔案生成將覆蓋原來的core檔案 。
用gdb同時除錯執行程式和相應的core檔案,可以復現程式崩潰時的場景,定位到具體程式崩潰的位置,且能看到具體的錯誤,分析前後的變數,找出問題的原因。
參考:Linux下core dumpCoredump 詳解Linux生成core檔案、core檔案路徑設定

基本GDB命令

為了定位問題,常常需要進行單步跟蹤,設定斷點之類的操作。

下邊列出了GDB一些常用的操作。

  • 啟動程式:run
  • 設定斷點:b 行號|函式名
  • 刪除斷點:delete 斷點編號
  • 禁用斷點:disable 斷點編號
  • 啟用斷點:enable 斷點編號
  • 單步跟蹤:next (簡寫 n)
  • 單步跟蹤:step (簡寫 s)
  • 列印變數:print 變數名字 (簡寫p)
  • 設定變數:set var=value
  • 檢視變數型別:ptype var
  • 順序執行到結束:cont
  • 順序執行到某一行: util lineno
  • 列印堆疊資訊:bt
    參考Linux生成core檔案、core檔案路徑設定