Ubuntuでコアダンプファイルを生成する方法を知りたいです。 Ubuntu 8.04.1とgccコンパイラー4.2.3を使用しています。コアダンプを生成する簡単なCプログラムを作成しました。 --gcc -g badpointer.cのようにプログラムをコンパイルしました。プログラムを実行すると、セグメンテーションエラーが発生しますが、コアダンプは生成されません。コアダンプファイルを生成するには、他に何をする必要がありますか?
次の方法でコアダンプをアクティブにします。
ulimit -c unlimited
また、以下を確認してください。
$ sysctl kernel.core_pattern
ダンプの作成場所を確認します(%e
はプロセス名、%t
はシステム時刻になります)。
/etc/sysctl.confで変更し、sysctl -p
でリロードできます。
次の方法でテストできます。
sleep 10 &
killall -SIGSEGV sleep
コアダンプが成功した場合、セグメンテーションエラー表示の後に「(core dumped)」が表示されます。
こちらもご覧ください:
Ubuntu
Ubuntuの場合、ダンプは/var/crash
の- Apport で作成されますが、デフォルトでは無効になっています。
詳細については、以下を確認してください。 buntuのコアダンプはどこにありますか?
MacOSでは、クラッシュダンプは Crash Reporter によってバックトレースの形式で自動的に作成されます。 Console を実行し、「ユーザー診断レポート」セクション(「診断および使用情報」グループの下)に移動してこれらのクラッシュファイルを見つけるか、~/Library/Logs/DiagnosticReports
で見つけることができます。
実際のコアファイルは/cores
で生成されます。
ulimit -c
の出力を確認します。0が出力されている場合、これがコアダンプされていない理由です。
使用する
ulimit -c unlimited
コアの作成を許可します(unlimited
を実際のサイズ制限に置き換えて安全性を高めます)。
ulimit -c
[〜#〜] size [〜#〜]で最大コアダンプサイズを設定します。