coreファイルについて
実践デバッグ技法を読んでの気付きというなの備忘録。
coreファイルとは
UNIX系OSにおいて、プログラムがエラーにより不正終了する際に、
メモリやレジスタの内容をディスクに記録すること。
もしくは記録したファイル。
coreファイルを出力するサンプルプログラム
sigsegv.c
#include <stdio.h>
int main( void )
{
char* c = 0;
printf( "%s/n", *c );
return 0;
}
coreファイルの出力確認
【コマンド】
$ ulimit -a
【出力結果】
core file size (blocks, -c) 0
※※※ 「0」の場合は出力されません。
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 256
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 709
virtual memory (kbytes, -v) unlimited
coreファイルの出力設定
【コマンド】
$ ulimit -c unlimited
【出力結果】
core file size (blocks, -c) unlimited
※※※ 先程、「0」だったものが、 unlimited となっている
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 256
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 709
virtual memory (kbytes, -v) unlimited
サンプルプログラムのコンパイル
【コマンド】
$ gcc -g sigsegv.c -o sigsegv.out
サンプルプログラムの実行(coreファイルを出力してみる)
【コマンド】
$ ./sigsegv.out
【実行結果】
drwxrwxr-t@ 3 root admin 102B 2 10 20:55 .
drwxr-xr-x 29 root wheel 1.0K 4 4 2013 ..
-r-------- 1 **** admin 351M 2 10 20:55 core.1378