Linux下coredump的配置方法以及流程
一. coredump 機(jī)制簡介
coredump 機(jī)制是在 Linux 系統(tǒng)中提供的一種調(diào)試機(jī)制。
Linux coredump 功能 是當(dāng) Linux 系統(tǒng)下應(yīng)用程序異常時(shí),Linux 內(nèi)核默認(rèn)的一種異常信號處理機(jī)制,內(nèi)核會把異常信息與進(jìn)程內(nèi)存轉(zhuǎn)儲成 coredump 文件。
軟件開發(fā)人員可以通過對該 coredump 文件進(jìn)行離線調(diào)試,定位代碼中出現(xiàn)的問題。
常出現(xiàn)這類的問題是低級 bug 中的內(nèi)存訪問越界、使用空指針、堆棧溢出等情況。
使程序運(yùn)行過程中異常退出或者終止,滿足這些條件就會產(chǎn)生 coredump 的文件。
coredump 文件分析方法是一種離線調(diào)試方法。
二. Linux下 coredump 的配置方法
這里為了方便起見,以 ubuntu 系統(tǒng)為例,介紹 ubuntu 系統(tǒng)下 coredump 功能的配置流程。
流程如下:
1. 開啟 coredump 功能
開啟 coredump 功能分臨時(shí)開啟與永久開啟。
這里使用永久開啟的方式:
即 更改 /etc/security/limits.conf 文件中的內(nèi)容。
操作如下:
去掉 soft core 0 一行前面的注釋 ,同時(shí),將 0 改為 unlimited 或 某個(gè)數(shù)值(如 204800)。
更改 limits.conf 文件中內(nèi)容,
如下所示:
* soft core 204800
驗(yàn)證是否開啟:終端輸入 ulimit -c 命令,可以查看是否已經(jīng)開啟。
0:表示未開啟。204800:表示已經(jīng)開啟。coredump 文件大小為 204800,單位為 blocks。
2. 關(guān)閉 ubuntu 系統(tǒng)下的 apport.service 服務(wù)程序
Linux 終端輸入 sudo service apport stop 命令可以關(guān)閉 apport.service 服務(wù)程序。
注意:
ubuntu 系統(tǒng)下 apport.service 服務(wù)程序,是自動生成崩潰報(bào)告,官方為了自動收集錯(cuò)誤的功能。
3. 更改生成的 coredump 文件的路徑
更改方式分臨時(shí)更改與永久更改方式。這里使用臨時(shí)更改方式。
操作如下:
首先,創(chuàng)建一個(gè)文件夾。我這里在 /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. 運(yùn)行可執(zhí)行程序
當(dāng)程序運(yùn)行崩潰時(shí),會在自定義文件夾下生成 coredump 文件。
首先,編譯代碼。編譯時(shí)需要加 -g 編譯選項(xiàng),旨在生成帶調(diào)試信息的可執(zhí)行程序。
其次,運(yùn)行程序。該代碼在運(yùn)行崩潰時(shí),會在所設(shè)置的文件夾目錄下生成 coredump 文件。
注意:
這里要生成 coredump 文件,則代碼中是存在內(nèi)存訪問越界或空指針使用等等的一些問題,導(dǎo)致程序運(yùn)行時(shí)會崩潰的現(xiàn)象。
總結(jié)
上述配置 生成coredump 文件的方法,已操作驗(yàn)證。
好了,以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
CentOS 6.3下源碼安裝LAMP(Linux+Apache+Mysql+Php)運(yùn)行環(huán)境步驟
這篇文章主要介紹了CentOS 6.3下源碼安裝LAMP(Linux+Apache+Mysql+Php)運(yùn)行環(huán)境步驟,需要的朋友可以參考下2014-07-07
服務(wù)器間如何實(shí)現(xiàn)scp免密文件傳輸
文章介紹了如何在本地電腦或源服務(wù)器上生成SSH密鑰,并將其復(fù)制到遠(yuǎn)程服務(wù)器上,以實(shí)現(xiàn)免密碼登錄,此外,還介紹了如何使用SCP命令在本地和遠(yuǎn)程服務(wù)器之間傳輸文件2025-02-02
Linux系統(tǒng)快照與回滾的實(shí)現(xiàn)方法
在現(xiàn)代Linux系統(tǒng)運(yùn)維和開發(fā)中,系統(tǒng)快照(Snapshot)與回滾(Rollback) 已成為保障系統(tǒng)穩(wěn)定性和數(shù)據(jù)安全的核心技術(shù),本文將從底層原理出發(fā),深入講解Linux下主流的快照與回滾實(shí)現(xiàn)方式,需要的朋友可以參考下2026-05-05
Ubuntu LTS服務(wù)器部署Jenkins詳細(xì)介紹
這篇文章主要介紹了Ubuntu LTS服務(wù)器部署Jenkins詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-03-03
Linux下實(shí)現(xiàn)定時(shí)器Timer的幾種方法總結(jié)
下面小編就為大家?guī)硪黄狶inux下實(shí)現(xiàn)定時(shí)器Timer的幾種方法總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-10-10

