zoukankan      html  css  js  c++  java
  • mtrace 简介

    内存泄露问题一般会再长时间运行的程序中暴露出来。而且一般很难定位和查找。

    linux 提供mtrace/muntrace来检测程序是否有内存泄露。一般来说要检测哪一段代码是否有内存泄露,就可以用这一对函数包起来。

    mtrace每一对malloc-free的执行,若每一个malloc都有相应的free,则代表没有内存泄露,对于任何非malloc/free情況下所发生的内存泄露问题,mtrace并不能找出来。

    在使用mtrace之前,先要设置一个环境变量“MALLOC_TRACE”来指定mtrace检测结果的生成文件名。通过此文件就可以看出代码是否有内存泄露。

    MALLOC_TRACE可以用export MALLOC_TRACE=xxx来设置,也可以通过setenv设置。

    下面写个简单的sample来看看mtrace是怎样使用的:

    #include <mcheck.h>
    #include <stdlib.h>

    void main(void)
    {
      setenv("MALLOC_TRACE", "/mnt/hgfs/share/test/mtrace_output", 1);
      mtrace();
      int *p1 = (int*)malloc(sizeof(int));
      int *p2 = (int*)malloc(sizeof(int));
      free(p1);
      muntrace();
      return;
    }

    gcc -g test_mtrace.c -o test_mtrace

    运行test_mtrace,就会生成指定文件mtrace_output.此文件是一个txt类型。

    查看mtrace结果的方法:mtrace [binary] output_file_name。就会将output_file_name的內容转化成能被理解的语句。

     另外一种定位mem leak方法:

    https://blog.csdn.net/lbo4031/article/details/51592476

    https://blog.csdn.net/hanyin7/article/details/38377743

  • 相关阅读:
    JavaScript严谨模式(Strict Mode)提升开发效率和质量(转载)
    如何调用.Net中的非Public方法
    ViewState机制由浅入深1
    使用SQL向SQL Server2005中插入图片
    ViewState机制由浅入深3
    在服务器端修改HTML控件的属性
    ViewState机制由浅入深2
    IsPostBack深入探讨
    关于架构的小整理,仅限于个人
    关于文件操作的小方法
  • 原文地址:https://www.cnblogs.com/fellow1988/p/6184754.html
Copyright © 2011-2022 走看看