ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 内存泄漏检测工具(转)

内存泄漏检测工具(转)

原创 Linux操作系统 作者:jcszjswkzhou 时间:2019-06-01 10:27:04 0 删除 编辑

检测已分配资源

第一个工具是一个内存资源使用的监听器.它只能在模拟器上进行调试.可以使用快捷键来调用

按键

功能

CTRL+ALT+SHIFT+A

显示已分配堆单元的数量

CTRL+ALT+SHIFT+B

显示已分配的文件服务器资源的数量

CTRL+ALT+SHIFT+C

显示已分配的窗口服务器资源的数量

堆检测宏

第二个工具可以在你指定的代码块中检测内存的分配情况.只需要把这些宏加入你要检测的代码部分即可:

宏

功能

__UHEAP_MARK

开始检测堆的使用状况

__UHEAP_CHECK(n)

检测自上一个__UHEAP_MARK是否有’n’个堆被分配(尚未释放)

__UHEAP_CHECKALL(n)

检测是否有’n’个堆已分配

__UHEAP_MARKEND

检测结束,并检测在__UHEAP_MARK之后有没有未被释放的堆

__UHEAP_MARKENDC(n)

检测结束,并检测在__UHEAP_MARK之后有无’n’个未被释放的堆

这是一个简单的使用示例

CMyClass * a1 = new(ELeave)CMyClass;

...

__UHEAP_MARK; //开始检测

CMyClass * a2 = new(ELeave)CMyClass;

CMyClass * a3 = new(ELeave)CMyClass;

...

__UHEAP_CHECK(2); //检测在__UHEAP_MARK之后有2个堆单元被分测(a2,a3)

__UHEAP_CHECKALL(3); //检测三个堆已被分配(a1,a2,a3)

delete(a2);

__UHEAP_MARKEND; // 结束检测,a3内存泄露

如果想设计驱动程序或内核模块,你可以使用__KHEAP_xxx宏来检测内核堆.

分配失效工具

用来进行压力测试.你可以使用下列宏

宏

功能

__UHEAP_SETFAIL(aType, n)

可以根据参数的不同来指定下一个内存如何分配.

参数表如下:

EDeterministic:n个请求失败

ERandom:随机失败,n是随机数的种子

ETrueRandom:随机失败

__UHEAP_FAILNEXT(n)

引起下一分配失败

__UHEAP_RESET()

避免内存失败

也可以在模拟器中按CTRL+ALT+SHIFT+P和CTRL+ALT+SHIFT+Q来使用分配失败工具


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10294527/viewspace-126454/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-08-29

  • 博文量
    3481
  • 访问量
    3019275