web-dev-qa-db-ja.com

コアダンプの場所の変更

コアダンプファイルのデフォルトの場所を変更して、コアダンプが生成されるたびにそのディレクトリに移動するようにします。また、この場所にクラッシュしたファイルの名前でダンプファイルを保存することはできますか?

34
rogue_knight9

はい、そうです。 /proc/sys/kernel/core_patternを変更して、コアファイルの生成に使用されるパス名を定義できます。詳細については、 man core を参照してください

例:

echo '/tmp/core_%e.%p' | Sudo tee /proc/sys/kernel/core_pattern    # `tee' instead of > so that
                                                                   # opening happens in the
                                                                   # elevated process

将来のすべてのコアダンプが/tmpで生成され、core_[program].[pid]という名前になります

59
mata

受け入れられた回答の指示に従う前に、/proc/sys/kernel/core_patternの内容をチェックして、Redhat abrtシステムが使用中かどうかを確認することをお勧めします。

-> cat /proc/sys/kernel/core_pattern
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e

それが使用されている場合は、オーバーライドする前に理解したいコアファイルを管理するためのかなり広範なスキームが既にあります。

一言で言えば、abrt:

  1. コアファイルをここに配置します:/var/spool/abrt/
  2. コマンドabrt-guiで開始されるGUIがあります
  3. 失敗したプロセスに関する追加情報をコアファイルに追加します。
  4. このファイルで構成されています:/etc/abrt/abrt-action-save-package-data.conf

それを使用する際の一般的な障害の1つは、構成ファイルの次の行を変更することです。

ProcessUnpackaged = no

それをyesに変更して、homebrewプロセスからコアファイルをキャプチャします。そうしないと、パッケージマネージャによってインストールされたプログラムからのみコアファイルがキャプチャされます。

[コアダンプの使用方法に答えるために編集]コアダンプを調べるには、次のようにします。

cd /var/spool/abrt/XXXXXXX
gdb $(cat executable) coredump

そうするためのより良い方法があるかもしれませんが、gdbは私によく役立ったので、他の方法を探していません。 XXXXXXXをコアダンプファイルを含むフォルダーに置き換えてください。 gdbコマンドはカットアンドペーストの準備ができています。

参照:

Redhat Book

CentOSフォーラム

26
Michael Potter