为什么会有core dump
当一个程序发生异常的时候,可以选择把进程的用户空间内存写到磁盘上,文件名叫core,core-dump(核心转储)用于查看进程的错误信息,便于分析程序,进行事后调试。
操作系统显示core文件的大小
一般情况下系统会限制core文件的大小的,因为服务器上一般都有自启进程的进程,用于把挂掉的进程重新启动起来,如果要是产生core文件的话,服务器上挂满了core文件会产生不好的结果。
使用core文件
查看core文件的限制
ulimit -a
设置core文件的大小(设置为1K)
ulimit -c 1024
编辑的时候必须家-g选项
gcc test.c - o test -g
运行程序
./test
生成core文件
./test core.1234
生成core文件的一般情况
- 内存越界
- 数组下标越界
- 字符号访问越界
- strcpy 使用时的越界问题
- 非法指针
- 空指针
- 乱转换,没有内存对齐
- 栈溢出
- 全局变量定义栈内存过大
- 多线程
- 没有加锁(多线程问题必须加锁)