内存泄漏检测工具memleax

内存泄漏检测工具memleax,第1张

memleax检测内存的思想是,监控进程内存分配和释放,打印出长期未释放的内存,因此更擅长排查内存增长问题。

memleax不需要单独编译程序,直接运行你的程序,使用memleax命令检测进程id

1、首先运行你的程序

2、/usr/bin/memleax -e 60 62240 62240为被检测的进程id, 60表示检测60s未释放的内存

会直接打印,长期未释放内存,建议启动自己测程序,先完成所有初始化 *** 作后,再使用memleax检测。

主要观测 free=0的,因为如果不是0,可能还是会释放的

缺点:只适合检测比较小的程序,计算量太大的程序会变慢,可能导致功能不正常。

Address sanitizer是google开发的用于检测内存泄露的工具。主要检测use-after-free, 和 memory leaks。sanitizer需要在编译的时候对可能泄露的内存进行标记,所有编译的时候需要带着sanitizer一起编译,高版本的gcc已经集成了sanitizer(gcc大于4.8)。 sanitizer的官网位置可以在github中检索到。

-g 是告诉编译器编译时把符号表等调试信息编译进来

-fsanitize=address 编译标志是告诉编译器编译时调用address sanitizer

-static-libasan 标志是告诉连接器,把address sanitizer库链接进来。

所以使用的时候,如果你的编译分两个命令,注意编译的时候要加 -g -fsanitize 标志。 然后链接的时候要加 -fsanitize -static-libasan 标志。举例如下:

当然编译命令也可以一步到位如下

gcc main.c -o main -fsanitize=address -static-libasan -g


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7890069.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存