【Linux】什麼是Core Dump值?

Core Dump值最初接觸到是在進程控制那個部分,(【Linux】進程的控制 ---- 創建、終止、等待、替換)其中進程終止時,子進程的退出狀態status的位圖如下:

當一個進程要異常終止時,可以選擇把進程的用戶空間內存數據以文件的形式全部保存到磁盤上,文件名通常是core,這種行爲叫做Core Dump。也叫核心轉儲

進程異常終止通常是因爲有Bug,比如非法內存訪問導致段錯誤。事後可以用調試器檢查core文件以查清錯誤原因,這叫做Post-mortem Debug(事後調試)----- gdb test ------->顯示錯誤:core-file core。

一個進程允許產生多大的core文件取決於進程的Resource Limit(這個信息保存在PCB中)。默認是不允許產生core文件的,因爲core文件中可能包含用戶密碼等敏感信息,不安全。在開發調試階段可以用ulimit命令改變這個限制,允許產生core文件。 首先用ulimit命令改變Shell進程的Resource Limit,允許core文件最大爲1024K: $ ulimit -c1024

然後寫一個死循環程序:

前臺運行該程序,然後在終端鍵入ctrl-\:

ulimit命令改變了Shell進程的Resource Limit,test進程的PCB由Shell進程複製而來,所以也具 有和Shell進程相同的Resource Limit值,這樣就可以產生Core Dump了。使用Core 文件:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章