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 ...