SIGSEGVの確認
あれっこのシステムってセグメンテーションフォルトするとどんな挙動するんだっけ?
って悩んだことはありませんか?
まぁ普通はいませんよね。でも、あれっプロセスが落ちたけど何故?
って困ったときはありませんか?
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("%d\n", *(int *)0);
return 0;
}
プロセスが落ちた時、core ってファイルが生成されているとGDBとかで原因の特定が可能です。
このソースコードを実行したときに下記のように出力されていれば、coreファイルは生成されていません。
$ ./segv
Segmentation fault
ulimit で確認してみましょう。
$ ulimit -c
0
値は 0 つまり、core ファイルは生成されません。
そこで、
$ ulimit -c unlimited
$ ulimit -c
unlimited
と無制限に設定して実行。
$ ./segv
Segmentation fault (core dumped)
無事にcoreファイルが生成されました。