
1、通过查看linux找到是哪个函数访问了异常地址,进行改正。
2、在linux数组或者结构体成员的前后分别加上magicnumber,复现故障,使用linux工具查看对应的magicnumber是否被修改,判断是向前踩内存还是向后踩内存,内存越界是软件系统主要错误之一,是指当内存输入超出了预分配的空间大小,就会覆盖该空间之后的一段存储区域,导致系统异常,其后果往往不可预料且非常严重。
[1] 如何排查大型C程序中的内存写越界导致的coredump?[2] 应用 AddressSanitizer 发现程序内存错误
[3] Linux 下的 AddressSanitizer
[4] 从segmentfault段错误谈起-(1)
[5] 踩内存专题分析
[6] How to use AddressSanitizer with GCC?
1、首先打开Linux命令窗口,可使用快捷键Ctrl+Alt+T打开。
2、这时查看一下当前Linux系统内存使用情况,使用命令:Free –m,total 内存总数,used 已经使用的内存数,free 空闲的内存数。
3、接下来的 *** 作需要先获取高级用户权限,输入命令:sudo -i,确定后输入高级用户密码。
4、这时进行拷贝文件拷贝,增加内存使用量(即used的占用量),输入命令: cp -r /etc ~/test/。
5、执行命令结束后,再次查看一下当前Linux系统内存使用情况,发现有70M的内存被cached用了。使用命令:Free –m。
6、接下来释放已被占用的缓存,输入命令: cat /proc/sys/vm/drop_caches,回车后返回结果0。
7、接着输入命令:sync,回车后继续输入命令:echo 3 > /proc/sys/vm/drop_caches,回车后继续输入:cat /proc/sys/vm/drop_caches,回车后返回结果3,将/proc/sys/vm/drop_caches值设为3。
8、这样缓存释放就已经完成了,再次执行命令Free –m看看,通过图中可以对比看到,内存被释放了218M。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)