Linux core dump 分析及相關除錯

2021-06-28 13:29:24 字數 1107 閱讀 5836

core是core dump檔案,是linux伺服器的一種機制。core是個程式的嚴重問題,會致使程式直接掛掉,需要恢復。

core檔案產生原因很多,有主動core 請求的,也有是程式的非法操作導致os傳送sigsegv相關的訊號。

主動core的方法:

1)程式在執行中,需要檢視裡面的程序或者執行緒的運**況,主動生成core。

先gdb attach 程序號

再使用generatercore命令產生core

2)發出kill 命令

被動core:

這個是由於程式的非法操作,比如非法寫記憶體,非法讀等觸發os的保護程式,由os發出相關訊號給程式,導致程式core掉。

1)修改/proc/sys/kernel/core_pattern檔案,

此檔案用於控制core檔案產生的檔名,預設情況下,此檔案內容只有一行內容:「core」,此檔案支援定製,一般使用%配合不同的字元,這裡羅列幾種:

%p  出core程序的pid
%u  出core程序的uid
%s  造成core的signal號
%t  出core的時間,從1970-01-0100:00:00開始的秒數
%e  出core程序對應的可執行檔名
2)ulimit -c 此命令可以顯示當前os對於core檔案大小的限制,如果為0,則表示不允許產生core檔案。如果想進行修改,可以使用

ulimit -c  n   n表示core檔案大小限制

ulimit -c unlimited 不限制大小

core檔案相當有用, core檔案相當於是儲存程式出錯誤的現場給程式設計師進行除錯,找問題。它會儲存程式的呼叫堆疊資訊,記憶體資訊及cpu使用的資訊等。

使用gdb除錯:

gdb 程式 core

使用bt檢視堆疊

使用info threads檢視執行緒資訊

thread n跳到對應的執行緒裡面去,進行除錯

f n 跳到相應的堆疊裡面去

p 列印變數

Linux Coredump 配置生成例項

coredump是linux程式執行時的記憶體映象,當程式發生異常 獲儲存,用於程式除錯分析。為程式儲存coredump 又稱core 檔案需要系統配置支援。ulimit c 0 ulimit c unlimited ulimit c 1024 0表示不生成檔案。可以通過 ulimit c 設定乙個...

Linux core dump的除錯技術(1)

有的程式可以通過編譯,但在執行時會出現segment fault 段錯誤 這通常都是指標錯誤引起的.以下是我們詳細的對linux core dump的除錯技術進行的介紹,想能幫助大家 1.linux core dump 前言 有的程式可以通過編譯,但在執行時會出現segment fault 段錯誤 ...

Linux core dump檔案介紹及除錯

1.core檔案的簡單介紹 在乙個程式崩潰時,它一般會在程式的當前目錄下生成乙個core檔案。core檔案僅僅是乙個記憶體映象 同時加上除錯資訊 主要是用來除錯的。2.開啟或關閉core檔案的生成 以下命令可以檢查生成core檔案的選項是否開啟 ulimit a 該命令將顯示所有的使用者定製,其中選...