在应用程序中,经常会导致段错误,segment default,我们可以使用二分法一个个打印,或者用gdb 一步步的step进去查看打印,但是这在很大的程序中显得效率很低,这时我们可以使用core dump 来调试查看出差的地方。
core就是核心的意思,这里是内存,dump是倒垃圾的意思,就是将程序中的内存出错的像倒垃圾一样呈现出来。
下面简单的显示一下core dump的用法
产生core文件。一般这个core文件都是命名为core 或者core.xxx(xxx就是产生错误的进程号)
设置core文件为没有限制大小
ulimit -c unlimited (如果要不产生core文件可用ulimit -c 0)
应用程序编译时加上-g选项
运行可执行程序
./core_test.o
ls 可看见产生core文件
core core_test.c core_test.o
开始调试:
gdb ./core_test.o core
可看见出错的地方。
Program terminated with signal 11, Segmentation fault.
#0 0x080483c7 in core_test () at core_test.c:6
这是个错误的赋值---数组越界
下面是测试文件