1 )如何生成 coredump 文件 ?bash
登錄 LINUX 服務器,任意位置鍵入服務器
echo "ulimit -c 1024" >> /etc/profileapp
退出 LINUX 從新登錄 LINUX測試
鍵入 ulimit -cui
若是顯示 1024 那麼說明 coredump 已經被開啓。unix
1024 限制產生的 core 文件的大小不能超過 1024kb,可使用參數unlimited,取消該限制調試
ulimit -c unlimited內存
2 ) . core 文件的簡單介紹開發
在一個程序崩潰時,它通常會在指定目錄下生成一個 core 文件。 core 文件僅僅是一個內存映象 ( 同時加上調試信息 ) ,主要是用來調試的。it
3 ) . 開啓或關閉 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
4 ) . 設置 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 的信號
%t - insert UNIX time that the coredump occurred into filename 添加 core 文件生成時的 unix 時間
%h - insert hostname where the coredump happened into filename 添加主機名
%e - insert coredumping executable name into filename 添加命令名
5 ) . 使用 core 文件
在 core 文件所在目錄下鍵入 :
gdb -c core
它會啓動 GNU 的調試器,來調試 core 文件,而且會顯示生成此 core 文件的程序名,停止此程序的信號等等。
須要關聯產生core文件的程序文件進行調試,gdb中使用file命令進行關聯
若是你已經知道是由什麼程序生成此 core 文件的,好比 MyServer 崩潰了生成 core.12345 ,那麼用此指令調試 :
gdb -c core MyServer
6 ) . 一個小方法來測試產生 core 文件
直接輸入指令 :
kill -s SIGSEGV $$