- 相關(guān)推薦
Linux中生成Core Dump系統(tǒng)異常信息記錄文件處理方法介紹
1 什么是 Core Dump
Core Dump 又叫核心轉(zhuǎn)儲(chǔ)。在程序運(yùn)行過(guò)程中發(fā)生異常時(shí),將其內(nèi)存數(shù)據(jù)保存到文件中,這個(gè)過(guò)程叫做 Core Dump。
2 Core Dump 的作用
在開(kāi)發(fā)過(guò)程中,難免會(huì)遇到程序運(yùn)行過(guò)程中異常退出的情況,這時(shí)候想要定位哪里出了問(wèn)題,僅僅依靠程序自身的信息打印(日志記錄)往往是不夠的,這個(gè)時(shí)候就需要 Core Dump 文件來(lái)幫忙了。
一個(gè)完整的 Core Dump 文件實(shí)際上相當(dāng)于恢復(fù)了異常現(xiàn)場(chǎng),利用 Core Dump 文件,可以查看到程序異常時(shí)的所有信息,變量值、棧信息、內(nèi)存數(shù)據(jù),程序異常時(shí)的運(yùn)行位置(甚至記錄代碼行號(hào))等等,定位所需要的一切信息都可以從 Core Dump文件獲取到,能夠非常有效的提高定位效率。
3 如何生成 Core Dump
3.1 Core Dump 文件生成開(kāi)關(guān)
Core Dump 文件的生成是由Core文件大小限制,Linux中默認(rèn)的Core文件大小設(shè)置為零,也就是不生成 Core Dump 文件,可以使用ulimit -c命令來(lái)查看當(dāng)前的Core文件大小限制。
要生成 Core Dump 文件,只需要執(zhí)行下面的命令設(shè)置Core文件的大小即可(其中filesize參數(shù)的單位為KByte):
ulimit -c filesize
如果要設(shè)置Core文件大小無(wú)限制(即把程序完整的運(yùn)行內(nèi)存都保存下來(lái)),則執(zhí)行如下命令:
ulimit -c unlimited
3.2 Core Dump 文件名設(shè)置
Core Dump 文件默認(rèn)的名字為core,而且新的Core文件會(huì)把老的覆蓋,這樣我們只能看到最后一次的 Core Dump 信息,可以通過(guò)設(shè)置Core文件名稱模板,使每次生成的 Core Dump 文件區(qū)分開(kāi)來(lái)。
Core Dump 文件的命名規(guī)則定義在/proc/sys/kernel/core_pattern文件中,規(guī)則中還可以加入預(yù)設(shè)的變量來(lái)更好的區(qū)分Core文件,支持的變量列表如下:
%% %字符 %p 進(jìn)程ID(PID) %u 用戶ID(UID) %g 用戶組ID %s 觸發(fā) Core Dump 的信號(hào) %t 觸發(fā) Core Dump 的時(shí)間(單位為秒,從 1970-01-01 00:00:00 開(kāi)始計(jì)算) %h 主機(jī)名稱(主機(jī)名可以通過(guò)uname命令來(lái)查看) %e 程序名稱(無(wú)路徑信息) %E 程序的路徑名稱(路徑中的/會(huì)被!替代) %c Core文件的限制大小值(Linux 2.6.24版本后開(kāi)始支持)
注:Core Dump 文件名的最大長(zhǎng)度為128字節(jié)(在 Linux 2.6.19 版本前,最大長(zhǎng)度為64字節(jié))。
例如:可以通過(guò)下面的命令,生成文件名為core-程序名稱-進(jìn)程ID-時(shí)間的 Core Dump 文件:
echo "core-%e-%p-%t" > /proc/sys/kernel/core_pattern
從 Linux 2.4 版本開(kāi)始,提供了一種比較原始的Core文件名設(shè)置方式,直接設(shè)置/proc/sys/kernel/core_uses_pid文件中的值為1,生成的Core文件名中便會(huì)自動(dòng)加上.PID后綴,即生成的文件名為core.PID這種形式。執(zhí)行下面的命令可以設(shè)置該值:
echo "1" > /proc/sys/kernel/core_uses_pid
4 如何使用 Core Dump
有了 Core Dump 文件后,可以使用GDB來(lái)加載分析,執(zhí)行如下命令(假設(shè)可執(zhí)行程序名稱及路徑為/home/hutaow/test_dump,生成的Core文件名為core):
gdb /home/hutaow/test_dump -c core
加載完成后,即可以在GDB中查看程序異常時(shí)的各種運(yùn)行信息了(查看變量值、線程信息、調(diào)用棧、反匯編等等)。
【Linux中生成Core Dump系統(tǒng)異常信息記錄文件處理方法介紹】相關(guān)文章:
Linux系統(tǒng)的文件設(shè)置方法05-24
Linux處理Tomcat異常的方法步驟10-01
Linux系統(tǒng)文件系統(tǒng)優(yōu)化及磁盤(pán)檢查的方法07-05
Linux系統(tǒng)文件管理09-16
Linux系統(tǒng)中查殺僵尸進(jìn)程方法介紹09-18
linux的文件系統(tǒng)05-05