Linux下如何生成coredump文件
coredump文件路徑
網(wǎng)上很多博文說到 coredump 文件默認(rèn)會(huì)在某個(gè)目錄下生成。
按照網(wǎng)上很多的說法,運(yùn)行程序就會(huì)生成 core 文件,一般生成路徑和可執(zhí)行程序是同一個(gè)路徑。
但是,我嘗試在 ubuntu 20.04 系統(tǒng)下,沒有生成 core 文件。
因此,需要查看 core 文件的生成路徑。
1.查看coredump文件生成路徑
查看 coredump 文件生成路徑的方法:輸入 cat /proc/sys/kernel/core_pattern 命令。
如下所示:
wangtian@wangtian-virtual-machine:~$ cat /proc/sys/kernel/core_pattern /home/wangtian/coredump_file/core.%e-%p-%s
于是,我進(jìn)入上述的目錄下,并沒有找到 coredump 文件。
網(wǎng)上有網(wǎng)友博文中提到,說這是因?yàn)?ubuntu 系統(tǒng)默認(rèn)情況下,開啟了一種服務(wù)程序 apport.service。
自動(dòng)生成崩潰報(bào)告,官方為了自動(dòng)收集錯(cuò)誤的。
2.更改coredump文件路徑
這時(shí),可以通過更改文件路徑的方法試試。
首先,創(chuàng)建一個(gè)文件路徑,我這里在 /home/wangtian/ 目錄下創(chuàng)建了文件夾 coredump_file。
其次,輸入 echo '/home/wangtian/coredump_file/core.%e-%p-%s' > /proc/sys/kernel/core_pattern 命令即可 更改 coredump 文件生成路徑(注意:這種更改為臨時(shí)更改方法)。
操作如下:

可以看出,更改路徑報(bào)出權(quán)限不夠。
這里因?yàn)槲覀冃薷牡?strong> core_pattern 文件是只讀文件,這樣修改文件路徑操作失敗。
3.關(guān)閉 apport.service服務(wù)
那么,我們換一種思路,即關(guān)閉 apport.service 服務(wù)(這個(gè)服務(wù)其實(shí)對(duì)我們來說,沒有很重要的作用)。
可以通過以下命令打開或關(guān)閉該服務(wù):
//啟用錯(cuò)誤報(bào)告 sudo systemctl enable apport.service //或 sudo service apport start //關(guān)閉錯(cuò)誤報(bào)告 sudo systemctl disable apport.service //或 sudo service apport stop
我在ubuntu系統(tǒng)下,輸入 sudo systemctl disable apport.service 命令無法關(guān)閉服務(wù)。
可以輸入第二條命令 sudo service apport stop 命令來關(guān)閉 apport.service 服務(wù),
操作如下:

接下來以有一段測(cè)試代碼為例
代碼如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
{
char buffer[3] = {0};
printf("---main()\n");
memcpy(buffer, "hello,world!", 12);
printf("---buffer: %s\n", buffer);
return 0;
}運(yùn)行程序(注意,程序編譯時(shí),必須加 -g 編譯選項(xiàng))
如下:

可以看到,在可執(zhí)行程序的目錄下,同時(shí),生成了 core 文件。
接下來可以通過對(duì)這個(gè)文件進(jìn)行分析來定位 bug 了。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
嵌入式Linux驅(qū)動(dòng)中的異步通知機(jī)制詳解
這篇文章主要介紹了嵌入式Linux驅(qū)動(dòng)中的異步通知機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-05-05
Linux使用 iftop 實(shí)時(shí)監(jiān)控網(wǎng)卡的流量
iftop可以用來監(jiān)控網(wǎng)卡的實(shí)時(shí)流量(可以指定網(wǎng)段)、反向解析IP、顯示端口信息等。這篇文章主要介紹了Linux 實(shí)時(shí)網(wǎng)卡流量監(jiān)控,需要的朋友可以參考下2019-11-11
寶塔Linux面板之好用免費(fèi)的中文Linux VPS主機(jī)控制面板適合快速建站
本篇文章主要介紹了寶塔Linux面板之好用免費(fèi)的中文Linux VPS主機(jī)控制面板適合快速建站,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
Ubuntu上Vim安裝NERDTree插件的詳細(xì)操作步驟
這篇文章主要介紹了Ubuntu上Vim安裝NERDTree插件操作步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08

