core檔案的簡單介紹

2021-05-21 14:34:39 字數 1478 閱讀 6398

1. core檔案的簡單介紹

在乙個程式崩潰時,它一般會在指定目錄下生成乙個core檔案。core檔案僅僅是乙個記憶體映象(同時加上除錯資訊),主要是用來除錯的。

2. 開啟或關閉core檔案的生成

用以下命令來阻止系統生成core檔案:

ulimit -c 0

下面的命令可以檢查生成core檔案的選項是否開啟:

ulimit -a

該命令將顯示所有的使用者定製,其中選項-a代表「all」。

也可以修改系統檔案來調整core選項

在/etc/profile通常會有這樣一句話來禁止產生core檔案,通常這種設定是合理的:

# no core files by default

ulimit -s -c 0 > /dev/null 2>&1

但是在開發過程中有時為了除錯問題,還是需要在特定的使用者環境下開啟core檔案產生的設定

在使用者的~/.bash_profile裡加上ulimit -c unlimited來讓特定的使用者可以產生core檔案

如果ulimit -c 0 則也是禁止產生core檔案,而ulimit -c 1024則限制產生的core檔案的大小不能超過1024kb

3. 設定core dump的核心轉儲檔案目錄和命名規則

/proc/sys/kernel/core_uses_pid可以控制產生的core檔案的檔名中是否新增pid作為擴充套件,如果新增則檔案內容為1,否則為0

proc/sys/kernel/core_pattern可以設定格式化的core檔案儲存位置或檔名,比如原來檔案內容是core-%e

可以這樣修改:

echo "/corefile/core-%e-%p-%t" > core_pattern

將會控制所產生的core檔案會存放到/corefile目錄下,產生的檔名為core-命令名-pid-時間戳

以下是引數列表:

%p - insert pid into filename 新增pid

%u - insert current uid into filename 新增當前uid

%g - insert current gid into filename 新增當前gid

%s - insert signal that caused the coredump into the filename 新增導致產生core的訊號

3. 使用core檔案

在core檔案所在目錄下鍵入:

gdb -c core

它會啟動gnu的偵錯程式,來除錯core檔案,並且會顯示生成此core檔案的程式名,中止此程式的訊號等等

如果你已經知道是由什麼程式生成此core檔案的,比如myserver崩潰了生成core.12345,那麼用此指令除錯:

gdb -c core myserver

以下怎麼辦就該去學習gdb的使用了

4. 乙個小方法來測試產生的core檔案

直接輸入指令:

kill -s sigsegv $$

Linux生成core檔案 core檔案路徑設定

在linux下產生並除錯core檔案 先看看我用的是個什麼機器 uname a linux dev 2.4.21 9.30axsmp 1 smp wed may 26 23 37 09 edt 2004 i686 i686 i386 gnu linux 再看看預設的一些引數,注意core file ...

Linux生成core檔案 core檔案路徑設定

在linux下產生並除錯core檔案 先看看我用的是個什麼機器 uname a linux dev 2.4.21 9.30axsmp 1 smp wed may 26 23 37 09 edt 2004 i686 i686 i386 gnu linux 再看看預設的一些引數,注意core file ...

Linux生成core檔案 core檔案路徑設定

在linux下產生並除錯core檔案 先看看我用的是個什麼機器 uname a linux dev 2.4.21 9.30axsmp 1 smp wed may 26 23 37 09 edt 2004 i686 i686 i386 gnu linux 再看看預設的一些引數,注意core file ...