web-dev-qa-db-ja.com

Ubuntuでコアダンプファイルを生成する方法

Ubuntuでコアダンプファイルを生成する方法を知りたいです。 Ubuntu 8.04.1とgccコンパイラー4.2.3を使用しています。コアダンプを生成する簡単なCプログラムを作成しました。 --gcc -g badpointer.cのようにプログラムをコンパイルしました。プログラムを実行すると、セグメンテーションエラーが発生しますが、コアダンプは生成されません。コアダンプファイルを生成するには、他に何をする必要がありますか?

22
user496934

Linux

次の方法でコアダンプをアクティブにします。

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/OS X

MacOSでは、クラッシュダンプは Crash Reporter によってバックトレースの形式で自動的に作成されます。 Console を実行し、「ユーザー診断レポート」セクション(「診断および使用情報」グループの下)に移動してこれらのクラッシュファイルを見つけるか、~/Library/Logs/DiagnosticReportsで見つけることができます。

実際のコアファイルは/coresで生成されます。

詳細: Mac OS Xでコアダンプを生成する方法

49
kenorb

ulimit -cの出力を確認します。0が出力されている場合、これがコアダンプされていない理由です。

使用する

ulimit -c unlimited

コアの作成を許可します(unlimitedを実際のサイズ制限に置き換えて安全性を高めます)。

35
Cédric Julien

ulimit -c[〜#〜] size [〜#〜]で最大コアダンプサイズを設定します。

0
lhf