调试,是开发流程中一个非常重要的环节。每个程序员都应,具备调试代码的能力,尤其对于从事 Linux 下的开发的读者。
从事 linux 下后台开发,有时候会遇到程序突然崩溃的情况,也没有任何日志,这会让你不知所措。
今天给大家介绍一个 core 文件,用这个文件,我们可以找出对应出错的代码行,感觉是不是很神奇。
对于程序,由于各种异常或者 bug,导致在运行过程中,并且在满足一定条件下,产生一个叫做 core 的文件。
通常情况下,core 文件会包含了,程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等。
许多程序出错的时候,会产生一个 core 文件。通过工具分析这个文件,我们可以定位到,程序异常退出的时候对应的堆栈调用等信息。
打开 core dump 开关:ulimit -c unlimited
看一段有问题的代码:
#include< stdio.h >
int main()
{
int *p=NULL;
*p=0;
printf("badn");
return 0;
}
linux下编译和执行:
[root@VM-16-9-centos c++]# g++ -g main.cpp
[root@VM-16-9-centos c++]# ./a.out
Segmentation fault (core dumped)
[root@VM-16-9-centos c++]# ls
a.out core.1989 main.cpp
上述代码一看就有错误,执行会产生 core dump。但是在大型项目中,用肉眼就很难看了。
全部0条评论
快来发表一下你的评论吧 !