1. CentOS/RHEL では、コア ファイルの作成はデフォルトで無効になっています。有効にするには、以下のコマンドを実行します:
# ulimit -S -c unlimited > /dev/null 2>&1
次に、同じシェル環境でプログラムを実行します。
2. 永続的に有効にするには、以下の手順に従ってください:
– /etc/security/limits.conf を編集します .
# vi /etc/security/limits.conf * soft core unlimited
「*」 ‘ は、すべてのユーザーに対してコアダンプ サイズを無制限にするために使用されます。
– /etc/sysctl.conf を編集します コア ダンプのパスとコア ファイルのファイル形式を追加します。デフォルトでは、コア ファイルは実行中のプロセスの作業ディレクトリに生成されます。
# vi /etc/sysctl.conf kernel.core_pattern = /var/crash/core.%e.%p.%h.%t
ここで、
/var/crash はパスで、core.%e.%p.%h.%t
%e はファイル形式です。 – 実行ファイル名.
%p – ダンプされたプロセスの PID.
%t – ダンプの時刻 (1970 年 1 月 1 日 0:00 からの秒数).
%h – ホスト名 (uname(2) によって返される「ノード名」と同じ)。
プロセスが構成されたディレクトリ (例:/var/carsh/) に対して正しい権限を持っていることを確認してください。
– fs.suid_dumpable を設定 setuid または保護/汚染されたバイナリ用。
# vi /etc/sysctl.conf fs.suid_dumpable = 2
以下は、事前定義された各値の意味です:
- 0 – (デフォルト) :従来の動作。特権レベルが変更されたプロセス、または実行のみのプロセスはダンプされません。
- 1 – (デバッグ) :可能であれば、すべてのプロセスがコアをダンプします。コア ダンプは現在のユーザーが所有しており、セキュリティは適用されません。これは、システムのデバッグ状況のみを対象としています。
- 2 – (suidsafe) :通常はダンプされないバイナリは、root のみが読み取れるようにダンプされます。これにより、エンドユーザーはそのようなダンプを削除できますが、直接アクセスすることはできません。セキュリティ上の理由から、このモードのコア ダンプは他のファイルや他のファイルを上書きしません。このモードは、管理者が通常の環境で問題をデバッグしようとする場合に適しています。
– 以下の /etc/sysctl.conf を変更した後、以下の sysctl コマンドを使用して設定を読み込みます:
# sysctl -p
署名されていないパッケージからコア ダンプを収集するには、OpenGPGCheck =no を設定します /etc/abrt/abrt-action-save-package-data.conf 内 .パッケージ化されていないソフトウェアからコア ダンプを収集するには、ProcessUnpackaged =yes を設定します /etc/abrt/abrt-action-save-package-data.conf内
– abrtd デーモンを root として再起動して、新しい設定を有効にします。
# service abrtd restart # service abrt-ccpp restart
CentOS/RHEL 7 の場合:
# systemctl start abrtd.service # systemctl start abrt-ccpp.service
これで、CentOS/RHEL は、プロセスが segfault で放棄されたときにコア ダンプ ファイルを生成する準備が整いました。
注意 :Red Hat Automatic Bug Reporting Tool (ABRT) が提供するデーモンと機能は、CentOS/RHEL ではサポートされていません。 ABRT パッケージと libreport などの関連ファイルは、パッケージの依存関係を満たすために配布に含まれていますが、これらのパッケージ内の機能はサポートされていません。