最令linux程序员头疼的莫过于内存泄露了,即使你是在优秀的程序员,你也不能保证所以的malloc操作都有对应的free,那必要的工具就是必不可少的了。在一般的linux发行版中,有一个自带的工具可以很方便的替你完成这些事,这个工具就是mtrace。
下面是它的用法
可以看出,只需要在你的程序中插入三行代码,就行。
第一句,#include <mcheck.h>,包含头文件
第二句,setenv("MALLOC_TRACE", "output", 1);output表示输出的中间文件
第三句,mtrace(),调用mtrace.
将这个文件编译,注意,编译的时候一地要加上gcc的-g选项。
gcc mtrace_test.c -g -o mtrace_test
接着执行可执行文件,然后你会发现当前目录下多了一个output的文件。
这个文件自然不是文本文件,所以需要工具来查看。
$ mtrace mtrace_test output
这时会打印出一串信息
- 0x000000000129a010 Free 3 was never alloc'd 0x7f62844d89ba
- 0x000000000129a100 Free 4 was never alloc'd 0x7f6284583a1d
- 0x000000000129a120 Free 5 was never alloc'd 0x7f62845d20ec
Memory not freed:
-----------------
Address Size Caller
0x000000000129a5a0 0x64 at /home/dianping/peter/mtrace/mtrace_test.c:12
其它别的直接忽略,注意那句要命的 Memory not freed,caller表示那段代码对应的malloc操作没有释放。顺便说一句,如果你编译的时候没有使用-g的选项,那么Caller这个地方就不会出现代码的信息,而是一串二进制的地址信息。
另外还有两个工具据说也不错dmalloc和memwatch,不过我没用过,以后用到了在写下使用方法吧
分享到:
相关推荐
总的来说,Mtrace是Linux环境下调试内存溢出和泄漏问题的强大工具。通过简单地在程序中插入`mtrace()`调用,设置环境变量,然后运行和分析日志,开发者就能有效地定位内存管理中的错误,从而提高程序的稳定性和效率...
### 内存溢出:Linux下使用Mtrace检查程序内存溢出 #### 一、内存溢出概述 内存溢出是指程序申请的内存超过系统所能提供的空闲内存时出现的一种异常现象。通常情况下,内存溢出会导致程序崩溃或运行异常。在Linux...
本文将详细介绍如何使用mtrace工具来查找Linux中的内存泄露问题。 #### 二、mtrace工具简介 mtrace是一款功能强大的内存跟踪工具,用于检测C/C++程序中的内存泄露和其他内存错误。与dmalloc和memwatch相比,mtrace...
【mtrace源码-MTrace FOSS】是一款开源的MTrace工具,主要用于MATLAB环境下的内存追踪和性能分析。MTrace的全称可能是“Memory Trace”,它帮助开发者深入了解MATLAB程序在运行过程中的内存分配和释放行为,从而优化...
#### 一、为何选择mtrace作为内存泄露分析工具 在嵌入式系统中,内存管理至关重要。对于这类系统中的程序,通常会在启动时分配大量内存,并持续运行而不释放这些内存。因此,关注点主要集中在程序初始化后运行过程...
mtrace主要通过记录和分析程序运行过程中的内存分配和释放行为,帮助找出内存泄漏、过度分配等问题。它的工作机制通常包括追踪内存分配函数(如malloc和free),记录分配信息,以及生成可读的报告,揭示内存使用模式...
"memleak-0.3.0.tar.gz" 和 "mtrace.tar.gz" 是两个压缩包文件,它们提供了用于检测内存泄露的工具。让我们深入探讨这两个工具以及它们如何帮助解决这个问题。 `memleak.c` 和 `memleak.h` 是 `memleak-0.3.0.tar` ...
mtrace 测试相关源码
`mtrace`是Linux系统上的一种调试工具,主要通过对`malloc`、`calloc`、`realloc`、`free`等内存分配函数进行hook,记录每一次内存操作的相关信息。这些信息包括分配的内存大小、分配的位置(调用栈信息)等,通过...
总结起来,Linux内存泄漏的检测方法包括使用Valgrind、mtrace、SystemTap、dmesg、top等工具,以及依赖静态代码分析和理解内存管理策略。在aarch32这样的嵌入式环境中,还需要考虑交叉编译和目标系统的特定需求。...
为了检测内存泄漏,Linux提供了多种工具,其中包括mtrace。mtrace是一个简单易用的内存泄漏检测工具,尤其适用于那些使用动态内存分配的C程序。 mtrace的使用通常涉及到以下几个步骤: 1. **环境变量设置**:在...
使用 sh4-linux-objdump 工具可以生成汇编文件,该文件可以帮助开发者定位内存泄露的函数。例如:`sh4-linux-objdump -dz ./objs/LINUX/daxian.exe &> asm.txt`,生成的汇编文件可以帮助开发者查找 0x6ab526 这个...
3. **内存泄露检测**:在系统或模块卸载时,mtrace能检查是否有未释放的内存,这是查找内存泄露的重要手段。如果存在内存泄露,mtrace会报告哪些内存块没有被正确释放,便于定位问题。 在mtrace的工作原理中,它...
嵌入式系统下内存泄漏检查库函数mTrace以及测试代码,有详细使用文档.这个是将malloc和free 函数控制起来,检查内存.
注意,Mtrace并不适用于所有情况,对于复杂的内存管理,可能需要使用更专业的内存泄漏检测工具,如Valgrind。 **Strace** Strace是一个系统调用跟踪工具,它可以记录程序执行过程中的系统调用和信号处理。这对于...
改进的mtrace脚本,可以输出动态库中泄漏的行号信息。
3.1 Linux 常用工具.............................................................................................................. 28 3.1.1 Shell简介........................................................