coredump调试
1、开启coredump
ulimit -c unlimited
echo 1 > /proc/sys/kernel/core_uses_pid
echo "/tmp/core-%e-%s-%u-%g-%p-%t" > /proc/sys/kernel/core_pattern
默认情况下,程序运行崩溃导致 core dump,是不会生成 core 文件的,因为系统的 RLIMIT_CORE(核心文件大小)资源限制,默认情况下设置为 0。
使用 ulimit -c 命令可以查看 core 文件的大小,其中 -c 的含义是 core file size,单位是 blocks 也就是 KB 的意思。ulimit -c 命令后面可以写整数,表示生成写入值大小的 core 文件。如果使用 ulimit -c unlimited 设置无限大,则任意情况下都会产生 core 文件
2、执行段错误
代码:
#include <stdio.h>
void func()
{
int *p = NULL;
*p = 13;
}
int main()
{
func();
return 0;
}
3、查看生成的段错误,文件
4、使用gdb调试core dump
5、具体的案例和gdb的 指令使用
........