佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > Linux中生成Core Dump系統(tǒng)異常信息記錄文件的教程

Linux中生成Core Dump系統(tǒng)異常信息記錄文件的教程

熱門標(biāo)簽:百度競價點擊價格的計算公式 外呼系統(tǒng) 電話機器人搭建 家政服務(wù)網(wǎng)絡(luò) 服務(wù)器配置 硅谷的囚徒呼叫中心 美團 解決方案

1 什么是 Core Dump
Core Dump 又叫核心轉(zhuǎn)儲。在程序運行過程中發(fā)生異常時,將其內(nèi)存數(shù)據(jù)保存到文件中,這個過程叫做 Core Dump。

2 Core Dump 的作用
在開發(fā)過程中,難免會遇到程序運行過程中異常退出的情況,這時候想要定位哪里出了問題,僅僅依靠程序自身的信息打?。ㄈ罩居涗洠┩遣粔虻?,這個時候就需要 Core Dump 文件來幫忙了。
一個完整的 Core Dump 文件實際上相當(dāng)于恢復(fù)了異?,F(xiàn)場,利用 Core Dump 文件,可以查看到程序異常時的所有信息,變量值、棧信息、內(nèi)存數(shù)據(jù),程序異常時的運行位置(甚至記錄代碼行號)等等,定位所需要的一切信息都可以從 Core Dump文件獲取到,能夠非常有效的提高定位效率。

3 如何生成 Core Dump
3.1 Core Dump 文件生成開關(guān)
Core Dump 文件的生成是由Core文件大小限制,Linux中默認(rèn)的Core文件大小設(shè)置為零,也就是不生成 Core Dump 文件,可以使用ulimit -c命令來查看當(dāng)前的Core文件大小限制。
要生成 Core Dump 文件,只需要執(zhí)行下面的命令設(shè)置Core文件的大小即可(其中filesize參數(shù)的單位為KByte):

復(fù)制代碼
代碼如下:

ulimit -c filesize

如果要設(shè)置Core文件大小無限制(即把程序完整的運行內(nèi)存都保存下來),則執(zhí)行如下命令:

復(fù)制代碼
代碼如下:

ulimit -c unlimited

3.2 Core Dump 文件名設(shè)置
Core Dump 文件默認(rèn)的名字為core,而且新的Core文件會把老的覆蓋,這樣我們只能看到最后一次的 Core Dump 信息,可以通過設(shè)置Core文件名稱模板,使每次生成的 Core Dump 文件區(qū)分開來。
Core Dump 文件的命名規(guī)則定義在/proc/sys/kernel/core_pattern文件中,規(guī)則中還可以加入預(yù)設(shè)的變量來更好的區(qū)分Core文件,支持的變量列表如下:

變量
說明
%% %字符
%p 進(jìn)程ID(PID)
%u 用戶ID(UID)
%g 用戶組ID
%s 觸發(fā) Core Dump 的信號
%t 觸發(fā) Core Dump 的時間(單位為秒,從 1970-01-01 00:00:00 開始計算)
%h 主機名稱(主機名可以通過uname命令來查看)
%e 程序名稱(無路徑信息)
%E 程序的路徑名稱(路徑中的/會被!替代)
%c Core文件的限制大小值(Linux 2.6.24版本后開始支持)

注:Core Dump 文件名的最大長度為128字節(jié)(在 Linux 2.6.19 版本前,最大長度為64字節(jié))。
例如:可以通過下面的命令,生成文件名為core-程序名稱-進(jìn)程ID-時間的 Core Dump 文件:
echo "core-%e-%p-%t" > /proc/sys/kernel/core_pattern
從 Linux 2.4 版本開始,提供了一種比較原始的Core文件名設(shè)置方式,直接設(shè)置/proc/sys/kernel/core_uses_pid文件中的值為1,生成的Core文件名中便會自動加上.PID后綴,即生成的文件名為core.PID這種形式。執(zhí)行下面的命令可以設(shè)置該值:

復(fù)制代碼
代碼如下:

echo "1" > /proc/sys/kernel/core_uses_pid

4 如何使用 Core Dump
有了 Core Dump 文件后,可以使用GDB來加載分析,執(zhí)行如下命令(假設(shè)可執(zhí)行程序名稱及路徑為/home/hutaow/test_dump,生成的Core文件名為core):

復(fù)制代碼
代碼如下:

gdb /home/hutaow/test_dump -c core

加載完成后,即可以在GDB中查看程序異常時的各種運行信息了(查看變量值、線程信息、調(diào)用棧、反匯編等等)。

標(biāo)簽:南昌 北海 防城港 邢臺 臨沂 烏蘭察布 韶關(guān) 撫州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Linux中生成Core Dump系統(tǒng)異常信息記錄文件的教程》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    银川市| 万载县| 印江| 平阴县| 鄱阳县| 尤溪县| 景东| 邓州市| 和龙市| 图木舒克市| 呼图壁县| 资兴市| 乳源| 北流市| 同心县| 高唐县| 南川市| 小金县| 安吉县| 青岛市| 翁源县| 贵南县| 灵台县| 和静县| 留坝县| 衡阳市| 合阳县| 策勒县| 汝城县| 建瓯市| 明星| 莎车县| 桂东县| 嘉善县| 兴海县| 花垣县| 图片| 长泰县| 通山县| 腾冲县| 务川|