下面这一段代码会出现SEGV错误。
#include <stdio.h>
int foo(void)
{
int *i = NULL;
*i = 0;
}
int main(void)
{
foo();
return 0;
}
执行后如下:
$ ./foo
段错误 (核心已转储)
但是没有发现 core 文件。
需要设置一下。
ulimit -c unlimited
再次执行生成 core 文件。
使用 gdb 调试:
gdb ./foo ./core
Core was generated by `./foo'.
Program terminated with signal 11, Segmentation fault.
#0 0x00000000004004c4 in foo () at foo.c:6
6 *i = 0;
(gdb) bt
#0 0x00000000004004c4 in foo () at foo.c:6
#1 0x00000000004004d5 in main () at foo.c:11