Linuxでコアダンプを出力する方法

Linuxでコアダンプを出力する方法

Posted at May 25,2017 12:03 AM
Tag:[Linux]

Linuxでコアダンプ(core)を出力する方法を紹介します。

1.問題点

Segmentation faultを発生させるC++プログラムを実行しました。

% ./a.out
Segmentation fault (コアダンプ)

が、ディレクトリにはcoreが出力されていませんでした。

出力されていない原因が分かりません。

ということで、coreを出力する方法を紹介します。

2.coreを出力する

coreを出力するには、まずulimitコマンドで現在の設定を確認します。ulimitはシステムリソースの上限を設定するためのコマンドで"-a"オプションで設定を確認できます。

# 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) 14622
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) 14622
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

赤字の部分がcoreの出力設定です。"0"になっているので出力できない状態になっています。

"ulimit -c"でコアダンプの出力サイズを設定します。

# ulimit -c unlimited

"unlimited"は無制限を意味します。

サイズを設定したい場合は、

# ulimit -c 1000000

のようにします。

再度、ulimitコマンドで現在の設定を確認します。

# ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
 :

これでcoreが出力できる準備ができました。

もう一度Segmentation faultを発生させてみます。

% ./a.out
Segmentation fault (コアダンプ)
% ls -l
-rwxr-xr-x 1 hoge hoge   10419  5月 24 08:49 a.out
-rw------- 1 hoge hoge  425984  5月 24 09:03 core.18212

coreが出力できました。

関連記事
zenback
人気エントリー
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)