我们在Linux下工作时,经常会挺别人说程序崩溃了,会打出一个 core 文件在当前目录下,那个是怎么做到的呢?
首先,我们需要看看自己的系统有没有开启 core 的开关,如果没有,我们需要开启,方法有很多,我就不在这里介绍了。
所谓 core 文件,就是程序崩溃之后,保存内存中的那部分内容,以便我们在 Debug 的时候使用。
好吧,我们看看下面的截图:
很显然,这段代码出错的地方你一眼就能看出来,就是没给指针分配内存空间,导致使用了非法内存,这样肯定是会导致段错误的。
注意:我在编译这个源代码时使用了 -g 选项,这个选项的意思就是生成调试信息,同时出现 core 文件,接着,我们就可以使用 gdb 调试我们的程序了。
首先,我们需要在终端输入:gdb ./dumptest
接着,不要管出现的那一堆信息,输入:core-file core,载入我们的 core 文件
最后,我们需要做的就是输入:where / bt ,以显示出错的那行代码在哪
如下截图显示了我上面的一系列动作: