1. 程式人生 > >Linux環境下程式core掉了

Linux環境下程式core掉了

(1)

Core的概念:當程式執行的過程中異常終止崩潰,作業系統會將程式當時的記憶體狀態記錄下來,儲存在一個檔案中,這種行為就叫做Core Dump

(2)

Core的作用:關鍵的程式執行狀態也會同時 dump 下來,例如暫存器資訊(包括程式指標、棧指標等)、記憶體管理資訊、其他處理器和作業系統狀態和資訊。core dump 對於程式設計人員診斷和除錯程式是非常有幫助的,因為對於有些程式錯誤是很難重現的,例如指標異常,而 core dump 檔案可以再現程式出錯時的情景。通過gdb看出程式掛再哪裡,分析前後的變數,找出問題的原因。

(3)

產生core的訊號:SIGQUIT,SIGILL,SIGABRT,SIGSEGV,SIGTRAP。

生成core的情景:kill -9(訊號:SIGKILL),ctrl+\(訊號:SIGQUIT),還有abort()函式,訪問記憶體錯誤,

注意:當ctrl + z 或者讓 ctrl + c時候,程式不會產生core。因為訊號為SIGTSTP(預設操作:暫停程序)或者SIGINT(預設操作:中止程序)。

(4)Linux下除錯core dump使用方法

Step1:加上-g 除錯

Step2:: 開啟core dump

Step3:

gdb program core

program為可執行程式名,core為生成的core檔案。

使用GDB,先從可執行檔案中讀取符號表資訊,然後讀取Core檔案。如果不與可執行檔案攪合在一起可以嗎?答案是不行,因為Core檔案中沒有符號表資訊。

參考資料: