Linux下coredump的配置方法以及流程
一. coredump 機制簡介
coredump 機制是在 Linux 系統(tǒng)中提供的一種調(diào)試機制。
Linux coredump 功能 是當 Linux 系統(tǒng)下應用程序異常時,Linux 內(nèi)核默認的一種異常信號處理機制,內(nèi)核會把異常信息與進程內(nèi)存轉(zhuǎn)儲成 coredump 文件。
軟件開發(fā)人員可以通過對該 coredump 文件進行離線調(diào)試,定位代碼中出現(xiàn)的問題。
常出現(xiàn)這類的問題是低級 bug 中的內(nèi)存訪問越界、使用空指針、堆棧溢出等情況。
使程序運行過程中異常退出或者終止,滿足這些條件就會產(chǎn)生 coredump 的文件。
coredump 文件分析方法是一種離線調(diào)試方法。
二. Linux下 coredump 的配置方法
這里為了方便起見,以 ubuntu 系統(tǒng)為例,介紹 ubuntu 系統(tǒng)下 coredump 功能的配置流程。
流程如下:
1. 開啟 coredump 功能
開啟 coredump 功能分臨時開啟與永久開啟。
這里使用永久開啟的方式:
即 更改 /etc/security/limits.conf 文件中的內(nèi)容。
操作如下:
去掉 soft core 0 一行前面的注釋 ,同時,將 0 改為 unlimited 或 某個數(shù)值(如 204800)。
更改 limits.conf 文件中內(nèi)容,
如下所示:
* soft core 204800
驗證是否開啟:終端輸入 ulimit -c 命令,可以查看是否已經(jīng)開啟。
0:表示未開啟。204800:表示已經(jīng)開啟。coredump 文件大小為 204800,單位為 blocks。
2. 關(guān)閉 ubuntu 系統(tǒng)下的 apport.service 服務程序
Linux 終端輸入 sudo service apport stop 命令可以關(guān)閉 apport.service 服務程序。
注意:
ubuntu 系統(tǒng)下 apport.service 服務程序,是自動生成崩潰報告,官方為了自動收集錯誤的功能。
3. 更改生成的 coredump 文件的路徑
更改方式分臨時更改與永久更改方式。這里使用臨時更改方式。
操作如下:
首先,創(chuàng)建一個文件夾。我這里在 /home/wangtian/ 創(chuàng)建了 coredump_file 文件夾。
其次,切換到 root 權(quán)限。終端輸入 sudo -s 命令。
最后,更改 coredump 文件生成路徑。
終端輸入如下命令:
echo '/home/wangtian/coredump_file/%t-%e-%p-%c.core' > /proc/sys/kernel/core_pattern
4. 運行可執(zhí)行程序
當程序運行崩潰時,會在自定義文件夾下生成 coredump 文件。
首先,編譯代碼。編譯時需要加 -g 編譯選項,旨在生成帶調(diào)試信息的可執(zhí)行程序。
其次,運行程序。該代碼在運行崩潰時,會在所設(shè)置的文件夾目錄下生成 coredump 文件。
注意:
這里要生成 coredump 文件,則代碼中是存在內(nèi)存訪問越界或空指針使用等等的一些問題,導致程序運行時會崩潰的現(xiàn)象。
總結(jié)
上述配置 生成coredump 文件的方法,已操作驗證。
好了,以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
CentOS 6.3下源碼安裝LAMP(Linux+Apache+Mysql+Php)運行環(huán)境步驟
這篇文章主要介紹了CentOS 6.3下源碼安裝LAMP(Linux+Apache+Mysql+Php)運行環(huán)境步驟,需要的朋友可以參考下2014-07-07
Linux下實現(xiàn)定時器Timer的幾種方法總結(jié)
下面小編就為大家?guī)硪黄狶inux下實現(xiàn)定時器Timer的幾種方法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-10-10

