1. core dump 的定义
- 程序员写程序时最担心的即使程序莫名其妙的down掉;这样的情况往往不好查;这时system 会在程序down时把程序的内存/寄存器状态/堆栈指针/内存管理信息
等信息记录到一个文件 core.pid ; 可以理解为程序core dump时状态的一个快照,程序员通过这个core 来查询原因。
- core dump 又称为segment falt 就是程序代码段错误,一般segment fault 都会产生core dump
2. 引发core dump的几种常见情况
- 内存越界(内存溢出)
- 使用错误的下标,导致数组访问越界
- 搜索字符串时,依靠字符串结束符来判断字符串是否结束,但是字符串没有正常的使用结束符
- 使用strcpy, strcat, sprintf, strcmp, strcasecmp等字符串操作函数,将目标字符串读/写爆。应该使用strncpy, strlcpy, strncat, strlcat, snprintf, strncmp, strncasecmp等函数防止读写越界。
- 多线程函数: 多线程读写的数据没有加锁保护,多个线程读写一个全局数据,不加锁保护容易core dump