CoreDump错误调试
1.1. CoreDump错误调试
1.1.1. 关键字
CoreDump、调试
1.1.2. 程序coredump的原因有那些?
程序产生Coredump实际上是进程收到SIGBUS(信号10)或SIGSEGV(信号11)信号而产生的内存转储,即总线错误或内存侵犯。
总线错误是访问内存操作偏移量不正确造成的,比较典型的是结构变量成员操作时,偏移量错误。
应用程序coredump一般情况都是由内存侵犯造成的,以下列出了一些可能发生coredump原因:
对指针变量的使用错误,如没有申请空间等即操作指针变量;
由于给字符串变量赋值时,给定的字符串超过了字符串变量的最大存储空间;
在函数中的整型变量没有赋初值,对于用这个变量操作字符串数组,超出数组最大维数,引起内存侵犯;
64位环境中,int型和long型字节数不一样,不能再使用int类型变量的地址作为long指针;
调用函数参数个数不符,最典型的是printf中的s%、d%等和后面的变量不匹配;(如:printf("%s" , iLen ); iLen为int型变量,会coredump)
通讯包的格式转换函数使用不当导致越界;
采用封装函数时,用整型存储数据库函数count,引起越界,应该用double类存储。
1.1.3. 怎样知道是那个程序产生的core文件?
Core文件一般产生在运行程序存放的目录下或程序运行时的当前路径。