什么什么01

来源:互联网 发布:linux pppoe拨号上网 编辑:程序博客网 时间:2024/04/19 22:16

段错误
所谓的段错误就是指访问(access)的内存超出了系统所给这个程序的内存空间,也就是访问了不该访问的地址。 为什么叫段错误呢, 因为内存是操作系统一段一段来分配做不同用途的,你访问到不属于你的那一段了,所以叫段错误。
怎么能产生段错误呢?
比如01, 数组访问越界 int a[9], 你定义这么一个数据,但是访问 a[9] 就内存越界了。
比如02, 指针,你把指针指向一个未知的地方,然后给那里写数据,就可能引发段错误。
并不是 你访问越界就一定会引发段错误 , 如果你越界的这个位置不太严重,可能系统就检测不到,但你读写的数据就不对了,可能更可怕。

core文件
核心转储, 会生成一个core文件,这是程序在不正常结束时,为了方便以后的调试,产生的一个内存快照,使用gdb这样的工具可以调试,追踪问题。
如果你的程序段错误退出了,却没有产生这种core文件,可能是因为系统禁止了。

    ulimit -c 查看当前设置的生成core文件的最大值。    ulimit -c 0 不产生core文件      ulimit -c 100 设置core文件最大为100k      ulimit -c unlimited 不限制core文件大小 

比如你的系统当前设置的core文件最大值是0, 那是生成不了core文件的。
生成core文件是为了调试的,但这有什么不好的影响呢?
比如你的服务占用内存很大,核心转储一次 需要生成一个3G大小的内存镜像,这时
第一,你的系统负载会突然很高
第二,生成这个文件耗时很长才能写到磁盘上,如果你提供的是繁忙的网络服务,这时服务会收到影响
第三,如果生成许多这样的文件,会占用很多磁盘空间。

0 0
原创粉丝点击