Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10478382
  • 博文数量: 2905
  • 博客积分: 20098
  • 博客等级: 上将
  • 技术积分: 36298
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-23 05:00
文章存档

2012年(1)

2011年(3)

2009年(2901)

分类: LINUX

2009-03-23 11:10:56

 
2.3分析日志文件
日志文件memwatch.log中包含的信息主要有以下几点:
*  测试日期
*  状态搜集器的信息
*  使用MemWatch的输出函数或宏(如TRACE等)的信息。
*  MemWatch捕获的错误信息
*  内存使用的全局信息统计,包括四点:
1)分配了多少次内存
2
)最大内存使用量
3)分配的内存总量
4
)为释放的内存总数
MemWatch捕获的错误记录在日志文件中的输出格式如下:
message: filename(linenumber), information
 
2.4 注意事项
mwInit()mwTerm()是对应的.所以使用了多少次mwInit(),就需要调用多少次
mwTerm()用于终止MemWatch.
 
如果在流程中捕获了程序的异常中断,那么需要调用mwAbort()而不是
mwTerm()。即使有显示的调用mwTerm()mwAbort()也将终止MemWatch
 
MemWatch不能确保是线程安全的。如果你碰巧使用Wind32或者你使用了线程,作为2.66,是初步支持线程的。定义WIN32或者MW_PTHREADS以明确支持线程。这会导致一个全局互斥变量产生,同时当访问全局内存链时,MemWatch会锁定互斥变量,但这远不能证明是线程安全的。
 

3 结论

     MemWatch的使用可以得知,无法用于内核模块。因为MemWatch自身就使用了应用层的接口,而不是内核接口。但是,对于普通的应用层程序,我认为还是比较有用,并且是开源的,可以自己修改代码实现;它能方便地查找内存泄漏,特别是提供的接口函数简单易懂,学习掌握很容易,对应用层程序的单元测试会较适用。

本文出自 “BrantC的博客” 博客,转载请与作者联系!

阅读(917) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~