Linux下coredump的配置方法以及流程
一. coredump 機(jī)制簡介
coredump 機(jī)制是在 Linux 系統(tǒng)中提供的一種調(diào)試機(jī)制。
Linux coredump 功能 是當(dāng) Linux 系統(tǒng)下應(yīng)用程序異常時,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 功能分臨時開啟與永久開啟。
這里使用永久開啟的方式:
即 更改 /etc/security/limits.conf 文件中的內(nèi)容。
操作如下:
去掉 soft core 0 一行前面的注釋 ,同時,將 0 改為 unlimited 或 某個數(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ù)程序,是自動生成崩潰報告,官方為了自動收集錯誤的功能。
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. 運(yùn)行可執(zhí)行程序
當(dāng)程序運(yùn)行崩潰時,會在自定義文件夾下生成 coredump 文件。
首先,編譯代碼。編譯時需要加 -g 編譯選項(xiàng),旨在生成帶調(diào)試信息的可執(zhí)行程序。
其次,運(yùn)行程序。該代碼在運(yùn)行崩潰時,會在所設(shè)置的文件夾目錄下生成 coredump 文件。
注意:
這里要生成 coredump 文件,則代碼中是存在內(nèi)存訪問越界或空指針使用等等的一些問題,導(dǎo)致程序運(yùn)行時會崩潰的現(xiàn)象。
總結(jié)
上述配置 生成coredump 文件的方法,已操作驗(yàn)證。
好了,以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Ubuntu文件系統(tǒng)磁盤空間不足報錯low disk space on file
最近開始啟動Ubuntu20.04時提示的信息如下:Low Disk Space on “Filesystem root”,這是因?yàn)閁buntu文件系統(tǒng)磁盤空間不足導(dǎo)致的,所以本文給大家詳細(xì)介紹了Ubuntu文件系統(tǒng)磁盤空間不足報錯low disk space on filesystem root的解決方案,需要的朋友可以參考下2024-09-09Linux系統(tǒng)磁盤格式化以及手動增加swap分區(qū)
本文給大家詳細(xì)介紹了在Linux系統(tǒng)中磁盤格式化 以及手動增加swap分區(qū)的方法和命令,十分全面,有需要的小伙伴可以參考下2018-09-09Linux中網(wǎng)絡(luò)性能優(yōu)化與監(jiān)控實(shí)戰(zhàn)詳細(xì)指南
在高并發(fā)場景下,Linux服務(wù)器的網(wǎng)絡(luò)性能直接影響用戶體驗(yàn),這篇文章將全面解析Linux網(wǎng)絡(luò)性能優(yōu)化的核心方法,感興趣的小伙伴可以學(xué)習(xí)一下2025-04-04詳解centos7虛擬機(jī)安裝elasticsearch5.0.x-安裝篇
本篇文章主要介紹了centos7虛擬機(jī)安裝elasticsearch5.0.x-安裝篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-12-12Linux中執(zhí)行定時任務(wù)的方法小結(jié)
有時候要在Linux系統(tǒng)上定時執(zhí)行腳本,Linux提供定時任務(wù)命令可以執(zhí)行,這篇文章小編就來和大家聊聊都有哪些方法可以實(shí)現(xiàn)定時任務(wù)吧2024-12-12JVM上高性能數(shù)據(jù)格式庫包Apache Arrow入門和架構(gòu)詳解(Gkatziouras)
Apache Arrow是是各種大數(shù)據(jù)工具(包括BigQuery)使用的一種流行格式,它是平面和分層數(shù)據(jù)的存儲格式,今天給大家介紹JVM上高性能數(shù)據(jù)格式庫包Apache Arrow入門和架構(gòu)介紹,感興趣的朋友一起看看吧2021-05-05