对Unix/Linux环境下运行的程序,有时会报出“段错误”、“段错误(吐核)”、“core dump”等信息,程序并终止。如果系统中的ulimit -c 足够大的话,会在程序目录下生成core文件。
那么core文件又是什么呢,大概内容是程序崩溃时的内存镜像。如果我们在程序编译时加了-g选项(添加调试信息),那么我们可以通过gdb去查看程序崩溃的原因。
下面通过源代码举例一下(Debian7操作系统):
代码比较简单,就是给空指针赋值。
保存后,gcc -g gdbdemo.c -o gdbdemo生成可执行文件。
然后查看ulimit -c 是否允许生成core文件,如果为0,则修改成其他值 或 unlimited值。
运行./gdbdemo程序后,报出“段错误(吐核)”信息,并生成core文件。
gdb ./gdbdemo ./core可查看core文件