7

アプリケーションが数日/週後にコアダンプを続けてしまうという問題がありますが、残念ながらコアダンプは生成されません。

設定ulimit -c unlimitedに成功しなかったため、コード自体に機能を組み込みsetrlimitましたが、そのアプローチでもうまくいきませんでした。さらに、MALLOC_CHECK_も追加しました。

興味深いことに、(を使用して)手動コアダンプを開始しようとすると、kill -ABRT <pid>コアダンプが生成されました。

私は次のメッセージを見ることができました/var/log/message

カーネル:[2302077.396021] myapp [22140]:segfault at 54552e42 ip 00000000f773f36f sp 00000000fffdc48c error 4 in ld-2.11.3.so [f7727000 + 1f000]

環境:sles11

アプリケーションにコアダンプをより確実に生成させる方法に関する提案はありますか?

4

2 に答える 2

4

現在のシステムの多くは、コア ダンプを残さないように構成されています (平均的なユーザーはコア ダンプをどう処理すればよいかわかりません)。

  • コアをダンプできるプロセスを開始してください (書き込み可能なディレクトリ、十分なスペース。プロセス中のディレクトリの変更がここで干渉する可能性があるかどうかはわかりません)。
  • プロセスを開始する同じシェルで「ulimit -c unlimited」を必ず指定してください
  • プログラムが SUID または SGID の場合、カーネルはセキュリティ上の理由からコアをダンプすることを拒否します。ガイダンスについては、この質問を参照してください。
于 2013-01-20T03:24:44.697 に答える
0

SLES 11で同じ問題が発生しました。特に「ulimit -c unlimited」を設定するというアドバイスに加えて、さらにいくつかのことが必要です。

  1. /etc/security/limits.conf を変更して、次の行を追加します。次に、念のためにログオフしてから再度ログオンします。

    *               soft    core            unlimited
    
  2. デフォルトのカーネル コア パターンは「/var/log/cores/%e/%p-%s-%t.core」です。(core(5) を参照してください。) ディレクトリ部分が存在しない場合、Linux はコア ファイルを作成しません。したがって、バイナリの名前である「%e」ビットを作成する必要があります。そうしないと、パターンを変更できます。

于 2013-04-25T10:12:06.060 に答える