在linux中,一般當程序非正常退出時,會生成乙個core檔案,這個檔案是程序猝死時記憶體的轉儲檔案,也稱為core dump。
檢視linux指令碼解析方式:
echo $0
1.檢驗core是否開啟
以see/see登入
csh: limit; coredumpsize = 0 , 說明沒有開啟core, 否則開啟了。
bash: ulimit –a ; 關注紅色部分。 如果是0,表示core沒有開啟,否則開啟了。
2.開啟core,設定大小
如果沒有開啟,永久開啟
······以root/huawei使用者登入,vi /etc/security/limits.conf ,注意紅色部分
臨時指定大小,以see/see使用者登入,
csh: limit coredumpsize 4096000
bash: ulimit -c 4096000 大小低於/etc/security/limits.conf中設定的大小
注意:這些都是臨時的,一旦該活躍視窗關閉後再次開啟,設定的core大小就失效了。
3. core路徑配置
注意:指定的core路徑有寫入許可權
以see/see使用者登入,/sbin/sysctl -a |grep core, 檢視目前core檔案生成的路徑
然後肉眼查一下 kernel.core_pattern 和 kernel.core_uses_pid 兩個配置值是多少。
kernel.core_pattern: core檔案路徑
kernel.core_uses_pid: 生成core檔案,字尾是否帶pid 1:帶; 0 :不帶
臨時修改路徑(需要root許可權)
/sbin/sysctl -w kernel.core_pattern=/core/core.%e.%p
/sbin/sysctl -w kernel.core_uses_pid=0
%p – insert pid into filename --- 顯示程序號
%u – insert current uid into filename --- 使用者id
%g – insert current gid into filename --- 組id
%s – insert signal that caused the coredump into the filename ---新增導致產生core的訊號
%t – insert unix time that the coredump occurred into filename --- 時間
%e – insert coredumping executable name into filename --- 名字
永久修改路徑(需要root許可權,機器重新啟動也會生效):
修改/etc/sysctl.conf,新增2行即可:
kernel.core_pattern = /core/core.%e.%p
kernel.core_uses_pid = 0
設定生效
sysctl -p /etc/sysctl.conf
4. 產生core(用於自測試)
以see/see使用者,ksh;kill -11 $$
5. 定位分析core
gdb container core檔案
然後:bt
6 .關閉core
臨時關閉:
csh: limit coredumpsize 0
bash: ulimit -c 0
注意:這些都是臨時的,一旦該活躍視窗關閉後再次開啟,設定的core大小就失效了。
永久關閉:
以root/huawei使用者登入,vi /etc/security/limits.conf ,注意紅色部分為0
linux core檔案機制
在程式不尋常退出時,核心會在當前工作目錄下生成乙個core檔案 是乙個記憶體映像,同時加上除錯資訊 使用gdb來檢視core檔案,可以指示出導致程式出錯的 所在檔案和行數。1.core檔案的生成開關和大小限制 1 使用ulimit c命令可檢視core檔案的生成開關。若結果為0,則表示關閉了此功能,...
linux core檔案機制
1.core檔案的生成開關和大小限制 1 使用ulimit c命令可檢視core檔案的生成開關。若結果為0,則表示關閉了此功能,不會生成core檔案。2 使用ulimit c filesize命令,可以限制core檔案的大小 filesize的單位為kbyte 若ulimit c unlimited...
linux core檔案機制
在程式不尋常退出時,核心會在當前工作 目錄下生成乙個core檔案 是乙個記憶體映像,同時加上除錯資訊 使用gdb來檢視core檔案,可以指示出導致程式出錯的 所在檔案和行數。1.core檔案的生成開關和大小限制 1 使用ulimit c命令可檢視core檔案的生成開關。若結果為0,則表示關閉了此功能...