对于内存溢出之类的麻烦可能大家在编写指针比较多的复杂的程序的时候就会遇到。Debug起来也是比较累人。其实linux系统下有一个使用的工具可以帮忙来调试的,这就是mtrace。Mtrace主要能够检测一些内存分配和泄漏的失败等。下面我们来学习一下它的用法。
使用mtrace来调试程序有4个基本的步骤,需要用到GNU C 函数库里面的一些辅助的函数功能。
1.在需要跟踪的程序中需要包含头文件<mcheck.h>,而且在main()函数的最开始包含一个函数调用:mtrace()。由于在 main函数的最开头调用了mtrace(),所以该进程后面的一切分配和释放内存的操作都可以由mtrace来跟踪和分析。
2. 定义一个环境变量,用来指示一个文件。该文件用来输出log信息。如下的例子:
$export MALLOC_TRACE=mymemory.log
3. 正常运行程序。此时程序中的关于内存分配和释放的操作都可以记录下来。
4. 然后用mtrace使用工具来分析log文件。例如:
$mtrace testmem $MALLOC_TRACE
下面我们看一个例子:
[hwang@langchao test]$ cat testmtrace.c
#include <mcheck.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *hello;
mtrace();
hello = (char*) malloc(20);
sprintf(hello,"\nhello world!");
return 1;
}
[hwang@langchao test]$export MALLOC_TRACE=mytrace.log
[hwang@langchao test]$ gcc testmtrace.c -o testmtrace
[hwang@langchao test]$./testmtrace
[hwang@langchao test]$ mtrace testmtrace mytrace.log
分享到:
相关推荐
mtrace 使用指南 mtrace 是一个内存跟踪工具,可以帮助开发者检测和解决内存泄露问题。下面是 mtrace 的使用步骤和相关知识点: 环境变量设置 在使用 mtrace 之前,需要定义环境变量。在 env.c 文件中加入环境...
3. **数据收集与处理**:Mtrace使用Collector组件收集来自Agent的数据,并通过Storm进行实时处理,最终将数据存储到HBase或Hive等数据库中,供统计分析使用。 4. **可视化界面**:为了方便用户查看和分析数据,...
#### 四、Mtrace使用示例 下面给出一个具体的使用示例: 1. **创建源代码文件**(假设文件名为`testmtrace.c`): ```c #include #include #include <mtrace.h> int main() { char *hello; mtrace(); ...
4. 友好的报告:MTrace生成的报告通常包含详细的内存分配和释放的时间线,以及各种统计信息,如总内存使用量、最大内存使用量、内存分配次数等,这些信息有助于开发者直观地理解程序的行为。 5. 集成与使用:MTrace...
本文将深入探讨`mtrace`的工作原理、使用方法以及它如何与`malloc`协同工作,旨在帮助开发者更有效地进行内存调试。 一、`mtrace`的基本概念 `mtrace`是Linux系统上的一种调试工具,主要通过对`malloc`、`calloc`...
mtrace,全称为Memory Trace,是一种用于内存跟踪和分析的工具,它可以帮助开发者理解和优化程序的内存使用情况。MTrace FOSS是mtrace的一个开源版本,提供了源代码,使得用户可以更深入地了解其工作原理并进行定制...
mtrace 测试相关源码
为了解决这一问题,开发者们使用各种工具进行内存跟踪,其中mtrace就是一款强大的工具,专门用于跟踪和分析程序的内存使用情况。本文将详细阐述mtrace的功能、工作原理以及如何使用它来诊断内存问题。 mtrace主要...
本文将深入探讨如何使用Mtrace来检查程序的内存行为。 首先,要启用Mtrace功能,你需要在待调试的程序中引入`<malloc.h>`头文件,并在`main()`函数的起始位置调用`mtrace()`函数。这个调用使得从`main()`开始的所有...
### 使用mtrace分析内存泄露 #### 一、为何选择mtrace作为内存泄露分析工具 在嵌入式系统中,内存管理至关重要。对于这类系统中的程序,通常会在启动时分配大量内存,并持续运行而不释放这些内存。因此,关注点...
改进的mtrace脚本,可以输出动态库中泄漏的行号信息。
在Linux系统中,调试是开发和维护软件的重要环节。熟练掌握基本的程序调试...Mtrace.doc、gdb.doc和strace.pdf文档应该包含了这些工具的详细使用方法和实例,建议仔细阅读并结合实际项目进行练习,以加深理解和应用。
使用npm install mtrace : npm install mtrace 生成一个mtrace: var mtrace = require ( 'mtrace' ) ; var filename = mtrace . mtrace ( ) ; if ( filename ) { console . log ( 'Saving mtrace to ' + ...
mtrace是一个简单易用的内存泄漏检测工具,尤其适用于那些使用动态内存分配的C程序。 mtrace的使用通常涉及到以下几个步骤: 1. **环境变量设置**:在运行包含mtrace的程序之前,需要设置`MALLOC_TRACE`环境变量来...
`mtrace.tar.gz` 文件则可能包含另一个名为 `mtrace` 的工具,这个工具可能是用于辅助分析内存使用情况,比如跟踪内存分配和释放的详细轨迹。`mtrace` 可能提供更高级的功能,如生成内存使用报告,或者与其他调试...
嵌入式系统下内存泄漏检查库函数mTrace以及测试代码,有详细使用文档.这个是将malloc和free 函数控制起来,检查内存.
本文将详细介绍如何使用mtrace工具来查找Linux中的内存泄露问题。 #### 二、mtrace工具简介 mtrace是一款功能强大的内存跟踪工具,用于检测C/C++程序中的内存泄露和其他内存错误。与dmalloc和memwatch相比,mtrace...
rpm -ivh glibc-utils-2.9-2.i386 使用时候: [root@zzt]$export MALLOC_TRACE=mytrace.log [root@zzt]$ gcc testmtrace.c -o testmtrace [root@zzt]$./testmtrace [root@zzt]$ mtrace testmtrace mytrace.log
这段代码演示了如何使用mtrace进行内存跟踪。通过`mtrace()`和`muntrace()`函数分别开启和关闭内存跟踪功能。 #### mtrace结果分析 运行程序后,可以在`mem.txt`文件中看到类似下面的结果: ``` Start @./callit:...