源地址:Memory Debuggers
有几种工具可用于查找内存泄漏或用于报告程序的各个内存分配。 这些工具可帮助分析内存使用模式,检测不平衡的分配和释放,报告缓冲区超载和欠载等。
内容:
1.mtrace
mtrace是glibc的内置部分,它可以检测由不平衡的malloc / free调用引起的内存泄漏。 为了使用它,程序被修改为调用mtrace()和muntrace()以开始和停止分配跟踪。 创建一个日志文件,然后可以通过“ mtrace” Perl脚本对其进行扫描。 “ mtrace”程序仅列出不平衡的分配。 如果源可用,则可以显示发生问题的源行。 mtrace可以在C和C ++程序上使用。
主页:http://wikipedia.org/wiki/Mtrace
2.memwatch
memwatch是一个程序,它不仅可以检测malloc和释放错误,还可以在分配的空间(缓冲区溢出和不足)之外进行读写操作。 要使用它,您可以修改源以包括memwatch代码,该代码提供malloc和free的替换。
memwatch无法捕获的某些内容是写入已释放的地址,并从分配的内存外部读取数据。
3.mpatrol
mpatrol看起来像memwatch。
可以查看:http://mpatrol.sourceforge.net/
4.dmalloc
“调试内存分配或dmalloc库旨在取代系统的malloc,realloc,calloc,free和其他内存管理例程,同时提供可在运行时配置的强大调试工具。这些工具包括诸如内存泄漏跟踪之类的东西。 ,栅栏后写检测,文件/行号报告和常规统计记录。”
该库可以在不修改现有程序的情况下使用,并使用环境变量来控制其运行以及要记录的问题集。
主页位于:https://dmalloc.com/
5.dbgmem
dbgmem看起来像是另一个动态库替换工具,类似于dmalloc(但功能可能更少)。
主页:http://dbgmem.sourceforge.net/
6.valgrind
valgrind进行动态二进制检测以分析程序,并提供了许多内存问题检测工具和性能分析工具。 它支持许多不同的体系结构和平台。
主页:https://elinux.org/Valgrind
7.Electric Fence
主页:https://elinux.org/Electric_Fence
8.Tutorials or Overviews
嵌入式系统中的内存泄漏检测。