このエントリーをはてなブックマークに追加


Cプログラムが異常終了したときにコアダンプを出力するように設定する

segmentation faultなどによりプログラムが異常終了したとき、コアダンプのファイルが出力されていない場合は、以下の設定で出力されるようになります。


スポンサーリンク

関連記事

コアダンプの出力設定確認

ターミナルを起動し以下のコマンドを実行してください。

ulimit -a

ulimit -a の出力の上記出力がコアダンプファイルの出力サイズになります。
この場合、値が0なので出力されません。

core file size          (blocks, -c) 0
$ ulimit -a
core file size          (blocks, -c) 0  <- ここ!
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 16046
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 16046
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

コアダンプを出力する設定方法

出力させる方法は以下の操作により可能です。

  • デバッグ対象プログラムを起動前にulimitコマンドを実行する(-c以降に最大出力サイズを指定する)
    ulimit -c 10000000
  • 生成するCoreのサイズを制限しない場合は以下のように設定します。
    ulimit -c unlimited
  • 毎回ulimitを設定するのは面倒なので.bashrcなど記述する viやgeditなどのエディタを起動し.bashrcにulimit -c <値>を追記する。
    以下のように追記しておけば毎回設定する必要がありません。

以上、プログラム以上終了時にコアダンプを出力する設定方法でした。


スポンサーリンク

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 21:01:00