下面有一文件exception.c
#include <stdio.h>
int main()
{
int code = 0;
scanf("%d",code);
printf("%d\n",code);
return 0;
}
编译
gcc -g -o exception exception.c
执行
./exception
3
段错误 (core dumped)
调试
gdb ./exception core.24392
这时只能看到出错库的提示
warning: Can't read pathname for load map: 输入/输出错误.
Reading symbols from /lib/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib64/ld-linux-x86-64.so.2
Core was generated by `./exception'.
Program terminated with signal 11, Segmentation fault.
#0 0x00007fc944ddd8fb in _IO_vfscanf () from /lib/libc.so.6
这时候输入where命令
(gdb) where
#0 0x00007fc944ddd8fb in _IO_vfscanf () from /lib/libc.so.6
#1 0x00007fc944de3d9d in __isoc99_scanf () from /lib/libc.so.6
#2 0x000000000040057a in main () at exception.c:6
便可以看到程序出错的具体位置,O(∩_∩)O~