Linux 下使用 gdb 定位 crash 位置

下面这一段代码会出现SEGV错误。

#include 

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

你可能感兴趣的:(调试)