アプリケーションをテストしています。アプリケーションが使用可能なメモリのほとんどを消費すると、カーネルがプロセスを強制終了します。しかし、調査の提案のために、プロセスが停止し、コア ファイルが生成されることを望みます。私はredhat 5.4を使用しています
とにかくそれを行うことはありますか?
「使用可能なメモリのほとんど」の説明から、システムのメモリが不足し、カーネルのメモリ不足ハンドラがプロセスを強制終了すると思います。SIGTERMによって強制終了されるため、通常の状況ではコアダンプを取得できません。
プログラムでSIGTERMを処理し、シグナルハンドラーでプロセスにSIGSEGVを送信して、コアダンプをトリガーすることで、コアダンプを取得できる場合があります。OTOH、メモリ不足の状況では、これにより、OOMハンドラーによって強制終了されるいくつかの追加プロセスが停止する可能性があります。
多くのシグナルのデフォルト アクションは、コア ダンプです。プログラムが Linux のデフォルト シグナル ハンドラをオーバーライドしない場合、適切なulimit
設定がされていれば、SIGQUIT でコア ダンプを発生させることができます。
SIGQUIT は、kill -SIGQUIT (process_id)
または、プログラムがキーボードに関連付けられている場合は、Ctrl-\ と入力して送信できます。
OOM が発生したときにプログラムが受信するシグナルを見つける必要があります。次に、シグナル関数を使用してハンドラーを設定します