博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux memwatch的内存检测-double-free
阅读量:5367 次
发布时间:2019-06-15

本文共 1230 字,大约阅读时间需要 4 分钟。

1 memwatch是什么?

memwatch是C语言的内存检测器。除了检测内存的功能外,它同样可以做其它的一些事情,而我们主要还是在于讲述它的基本功能。如果你真的想要知道所有相关的具体细节,可详细查看头文件memwatch.h以及源代码。那里面有具体且详细的注释说明。
它使用C于处理器的功能,memwatch使用它自己定义的功能函数取代所有在你的程序中用ANSI C定义的内存分配函数,memwatch的内存分配函数包含了了所有的分配记录信息。
2 memwatch功能
a.它主要有基本的内存管理函数
mwMalloc()
mwFree()
mwCalloc()
mwRealloc()
b.MemWatch能够检测的功能包括
双重释放(double-free)、
错误释放(erroneous free)、
内存泄漏(unfreed memory)、
溢出(Overflow)、
下溢(Underflow)等
而目前我们只针对double-free进行了验证;
对于unfreed功能,需要在主程序结束前添加CHECK()函数进行检查,这一点嵌入式系统并不特别适用,因此,在强行关闭程序时有可能会出现大量的unfreed信息,请忽略。
使用MemWatch功能需要在待检测源文件中引用memwatch.h,若没有添加有可能出现野指针(wild-free)信息;如果申请内存时使用了malloc而释放内存时使用了mwfree接口,有可能会出现错误释放(wild-free)信息,遇到wild-free现象时请先排除以上两场景。
3 编译
当编译时, 相让memwatch起作用, 编译是加上-DMEMWATCH
4 memwatch.log内容
在正常操作的情况下,memwatch会创建一个名叫memwatch.log的文件。但有的时候,memwatch.log文件并不能被创建。此时,memwatch会尝试创建命名类似memwatNN.log的文件,其中NN是01到99之间的数字。如果还是失败,则没有log文件。
a、检测启动时间:
如:
Started at Thu Nov 1 14:56:31 2012
Started at Thu Nov 1 14:56:31 2012
b、状态搜集器的信息及宏定义信息,可忽略。
如:
__STDC__ 64-bit mwDWORD==(unsigned long
mwROUNDALLOC==8 sizeof(mwData)==32 mwDataSize==32
c、MemWatch捕获的错误信息
如:
double-free: <1385> menuChannelSet.c(529), 0x11a4130 was freed from mwTest.c(781)

转载于:https://www.cnblogs.com/szgzwc/archive/2012/11/07/2758335.html

你可能感兴趣的文章
实现one hot encode独热编码的两种方法
查看>>
ubuntu中文英文环境切换
查看>>
[sql]mysql启停脚本
查看>>
[elk]Mutate filter plugin增删改查字段
查看>>
Java内功心法,行为型设计模式
查看>>
向github项目push代码后,Jenkins实现其自动构建
查看>>
jquery中的ajax方法参数的用法和他的含义
查看>>
BZOJ 1226: [SDOI2009]学校食堂Dining
查看>>
数组去重的几种方法
查看>>
包装类的自动装箱与拆箱
查看>>
ShareSDk的使用
查看>>
android使用web加载网页的js问题
查看>>
libvirt log系统分析
查看>>
poj 1068 Parencodings
查看>>
docker 数据卷管理
查看>>
adb
查看>>
Apache Tomcat部署java web项目
查看>>
转泛型
查看>>
第二周 9.6-9.12
查看>>
用mkdirs创建目录
查看>>