2.3分析日志文件 日志文件memwatch.log中包含的信息主要有以下几点: * 测试日期 * 状态搜集器的信息 * 使用memwatch的输出函数或宏(如TRACE等)的信息。 * memwatch捕获的错误信息 * 内存使用的全局信息统计,包括四点: 1)分配了多少次内存 2)最大内存使用量 3)分配的内存总量 4)为释放的内存总数 memwatch捕获的错误记录在日志文件中的输出格式如下: message: filename(linenumber), information 2.4 ...
memwatch主要是通过gcc的precessor来进行的。 在memwatch.h中 #define malloc(n) mwMalloc(n,__FILE__,__LINE__) #define strdup(p) mwStrdup(p,__FILE__,__LINE__) #define realloc(p,n) mwRealloc(p,n,__FILE__,__LINE__) #define calloc(n,m) mwCalloc(n,m,__FILE__,__LINE__) #define free(p) mwFree(p,__FILE__,__LINE__) #define CHECK() mwTest(__FILE__,__LINE__,MW_TEST_ALL) #define...
memwatch 由 Johan Lindh 编写,是一个开放源代码 C 语言内存错误检测工具,您可以自己下载它(请参阅本文后面部分的参考资料)。只要在代码中添加一个头文件并在 gcc 语句中定义了 memwatch 之后,您就可以跟踪程序中的内存泄漏和错误了。memwatch 支持 ANSI C,它提供结果日志纪录,能检测双重释放(double-free)、错误释放(erroneous free)、没有释放的内存(unfreed memory)、溢出和下溢等等。 1. 下载memwatch, http:...
各位大侠,你们好! 我在使用memwatch的时候遇到一个问题,请帮忙分析一下! 问题提示如下: 下面的C文件都是解压软件自带的! [root@ppc34 memwatch-2.71]# gcc -o test -Dmemwatch -Dmemwatch_STDIO test.c memwatch.c test.c:116:2: error: #error "Hey! Don't just compile this program, read the comments first!" 小弟是因为服务器经常死机,如果有其他跟踪办法,还请相告!谢谢!~
============= memwatch 2.71 Copyright (C) 1992-1999 Johan Lindh ============= Started at Tue Jan 6 13:15:16 2009 Modes: __STDC__ 32-bit mwDWORD==(unsigned long) mwROUNDALLOC==4 sizeof(mwData)==32 mwDataSize==32 statistics: now collecting on a line basis Hello world! underflow: test.c(62), 200 bytes alloc'd at test.c(60) relink: test.c(66) attempting to repair MW-0x8051390... relink: MW-0x80513...
我写了个程序,进行内存测试, 发现如果我把存在内存泄露函数放在同一个.C文件里进行编译时, 是可以检测到的, 但是如果我把这个函数放到别的文件(.H 或.C文件里), 采用包含该文件的形式进行编译测试时,就检测不到. 大家看看这是怎么回事呢? [ 本帖最后由 incle 于 2007-9-14 16:21 编辑 ]
Using文件里面提到了说: === As of version 2.66, there is rudimentary support for threads, if you happen to be using Win32 or if you have pthreads. Define WIN32 or MW_PTHREADS to signify this fact. This will cause a global mutex to be created, and memwatch will lock it when accessing the global memory chain, but it's still far from certified threadsafe. === 但是没有更细致的说明会有什么问题,或者说...