CentOS で Apacheモジュール のデバッグをしていて、 Core Dump を吐かせようと思ったときに少し迷ったのでここにメモしておく。
Core Dump はプログラムがクラッシュしたときのメモリの状態を示すものであり、gdb でいろいろ解析ができるのでデバッグ時に重宝するのだが、サイズが結構巨大になる。それに Production な環境では不要なものなので、ディストリビューションはあの手この手で Core Dump を出力しないようにしているのが普通だ。
ググるといろんなやり方が書いてあるけれども、ディストリビューションによって手順が違うのに加えて、一般論も混じっていてかなりわかりづらい。CentOS(Red Hat系ディストリビューション) で一番簡単なのは以下だ。
これは、/etc/init.d/functions で ulimit を環境変数で毎回設定していることによる。
----
1. httpd.conf に CoreDumpDirectory を追加。
CoreDumpDirectory /tmp/
2. コアファイルの ulimit 設定を指定して Apache を再起動
DAEMON_COREFILE_LIMIT=unlimited; /etc/init.d/httpd restart
0 件のコメント:
コメントを投稿