使用gdb和core dump迅速定位段错误(完)
使用gdb和core dump迅速定位段错误 关键字:gdb、段错误、core dump 一、什么是core dump core:内存、核心的意思; dump:抛出,扔出; core dump:前提:当某程序崩溃的一瞬间,内核会抛出当时该程序进程的内存详细情况,存储在一个名叫core.xxx(xxx为一个数字,比如core.699)的文件中。 二、更改生成的core文件的大小限制 可见,core文件是内核生成的,那某一个进程因为段错误而崩溃的时候的内存映像很大,那必然会生成一个很大的core文件,所以我们可以通过ulimit命令来设置生成core文件的大小,例如$ulimit -c unlimited,这里就是设置生成的core文件无大小限制。 三、生成core文件 当第二步完成了,就运行一次那个有问题的程序,然后自然就会因为段错误而崩溃,在当前目录下就生成了core.xxx文件。 四、分析core文件 使用命令$gdb 程序名 core.xxx,然后再输入where就可以看到产生段错误的地方。 五、实例分析 1.test.c文件的源代码 1 void do_it(); 2 int main() 3 { 4 do_it(); 5 return 0; 6 } 7 void do_it() 8 { 9 char* p = 1; //定义一个字符指针变量a,指向地址1