Linux
安裝了 abrt-hook-cpp 的核心文件在哪裡?
不久前我將這個問題發佈到 StackOverflow,但剛剛發現了這個社區,並且覺得這至少是一個同樣適合這個問題的網站:
我被引導理解,如果 abrt-ccpp.service 安裝在 Linux PC 上,它會取代/覆蓋(我都讀過,不確定哪個是真的)文件
/proc/sys/kernel/core_pattern
,否則指定位置和文件名模式核心文件。問題:
我執行的時候
systemctl
,為什麼abrt-ccpp.service會exited
在SUB
欄下報錯?我不明白active
and的組合exited
:服務是否“活動”/活動/正在執行?> systemctl UNIT LOAD ACTIVE SUB abrt-ccpp.service loaded active exited ...
問題:
核心文件在哪裡生成?我編寫了這個程序來生成一個
SIGSEGV
:#include <iostream> int main(int argc, char* argv[], char* envz[]) { int* pInt = NULL; std::cout << *pInt << std::endl; return 0; }
編譯執行如下:
> g++ main.cpp > ./a.out Segmentation fault (core dumped)
但我無法找到生成核心文件的位置。
我嘗試過的:
- 在與我的
main.cpp
. 核心文件不存在。/var/tmp/abrt/
因為下面的評論看了進去/etc/abrt/abrt.conf
。核心文件不存在。…
# Specify where you want to store coredumps and all files which are needed for # reporting. (default:/var/tmp/abrt) # # Changing dump location could cause problems with SELinux. See man_abrt_selinux(8). # #DumpLocation = /var/tmp/abrt
…
- 由於此連結
/var/spool/abrt/
上的評論而查看。核心文件不存在。- 編輯
/etc/abrt/abrt.conf
和取消註釋並設置DumpLocation = ~/foo
哪個是現有目錄。隨後重新啟動 abrt-hook-ccpp (sudo service abrt-ccpp restart
) 並重新執行a.out
。核心文件未在~/foo/
- 驗證
ulimit -c
報告unlimited
。我不知道還有什麼可以嘗試以及在哪裡看。
如果有幫助,這是我的內容
/proc/sys/kernel/core_pattern
:> cat /proc/sys/kernel/core_pattern |/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e
有人可以幫助解釋 abrt-hook-ccpp 服務的工作原理以及它在哪裡生成核心文件嗎?謝謝你。
一種可能性是需要更改配置文件中的行
/etc/abrt/abrt-action-save-package-data.conf
ProcessUnpackaged = no
to
yes
,否則 abrtd 將僅從包管理器(、、或其他)安裝的程序中擷取核心dnf
文件apt
。使用abrt-gui
或abrt-cli
查找核心轉儲。
除了 meuh 所說的,一旦 abrt 守護程序收集了崩潰資訊(在修改上述配置文件後重新啟動它之後),您可以使用 abrt-cli 或 abrt-gui 查看該資訊在哪裡。
# abrt-cli -a ls id xxxxxxxxxxxxxxxxxx reason: MYPROGRAM killed by SIGABRT time: Thu 10 Jan 2019 11:48:07 AM CET cmdline: ./myExecutable uid: 1001 Directory: /var/spool/abrt/ccpp-2019-01-10-11:48:07-17559 Run 'abrt-cli report /var/spool/abrt/ccpp-2019-01-10-11:48:07-17559' for creating a case in Red Hat Customer Portal
在提供的目錄中,您將找到該
coredump
文件。