しばらく前にStackOverflowにこの質問を投稿しましたが、今はこのコミュニティを見つけました。
/proc/sys/kernel/core_pattern
abrt-ccpp.serviceがLinux PCにインストールされると、コアファイルの場所とファイル名パターンを指定するファイルを置き換え/上書きします(両方読んだがどちらが本当であるかはわかりません)。
質問:
abrt-ccpp.serviceを実行したときにその列の下に報告するsystemctl
のはなぜですか?次の組み合わせがわかりません。サービスは「アクティブ」/アクティブ/実行中ですか?exited
SUB
active
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サービスのしくみとコアファイルの作成場所を説明するのに役立つ人はいますか?ありがとうございます。
答え1
1つの可能性は、構成ファイルの行を変更する必要があることです。/etc/abrt/abrt-action-save-package-data.conf
ProcessUnpackaged = no
それ以外の場合、abrtdはyes
パッケージマネージャ(dnf
またはその他)apt
がインストールしたプログラムからのみコアファイルをキャプチャします。コアダンプを使用abrt-gui
または検索します。abrt-cli
答え2
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
ファイルを見つけることができます。