linux 编程----内存泄露检测之mtrace
来源:互联网 发布:excel2003提取重复数据 编辑:程序博客网 时间:2024/03/28 21:34
几种常用的内存检测工具
mtrace是一个C函數,在<mcheck.h>里声明及定义,函数原型为:
void mtrace(void);
其实mtrace是类似malloc_hook的 malloc handler,只不过mtrace的handler function已由系统为你写好,但既然如此,系统又怎么知道你想将malloc/free的记录写在哪里呢?为此,调用mtrace()前要先设置 MALLOC_TRACE环境变量:
#include <stdlib.h>
setenv("MALLOC_TRACE", "output_file_name", 1);
但是检测结果的格式是一般人无法理解的,而只要有安装mtrace的话,就会有一名为mtrace的Perl script,在shell输入以下指令:
mtrace [binary] output_file_name
就会将output_file_name的內容转化成能被理解的语句。
例如:测试程序
#include <iostream>
#include <mcheck.h>
#include <stdlib.h>
using namespace std;
int main()
{
setenv("MALLOC_TRACE","output",1);
mtrace();
int *p1=new int;
int *p2=new int;
int *p3=(int*)malloc(sizeof(int));
int *p4=(int*)malloc(sizeof(int));
delete p1;
free(p3);
return 0;
}
执行:
$ g++ -Wall -g main.cpp -o main
生成
main
运行
./main
生成
output文件
查看output文件
$mtrace main output
完整的运行信息如下:
snail@ubuntu:~/Java_workspace/3_内存泄露_mtrace$ g++ -Wall -g main.cpp -o main
main.cpp: In function ‘int main()’:
main.cpp:10:7: warning: unused variable ‘p2’
main.cpp:12:7: warning: unused variable ‘p4’
snail@ubuntu:~/Java_workspace/3_内存泄露_mtrace$ ./main
snail@ubuntu:~/Java_workspace/3_内存泄露_mtrace$ ls
main main.cpp output
snail@ubuntu:~/Java_workspace/3_内存泄露_mtrace$ mtrace main output
- 0x09aa1008 Free 8 was never alloc'd 0x8778cc
- 0x09aa10c8 Free 9 was never alloc'd 0x91556f
- 0x09aa10e0 Free 10 was never alloc'd 0x915577
Memory not freed:
-----------------
Address Size Caller
0x09aa1478 0x4 at 0xe7c679
0x09aa1498 0x4 at /home/snail/Java_workspace/3_内存泄露_mtrace/main.cpp:12
snail@ubuntu:~/Java_workspace/3_内存泄露_mtrace$
也就是对于New的内存,只能检测出有泄露,但不能定位。
- linux 编程----内存泄露检测之mtrace
- linux 内存泄露检测 mtrace
- Linux C 编程内存泄露检测工具:mtrace
- Linux C 编程内存泄露检测工具(一):mtrace
- Linux C 编程内存泄露检测工具(一):mtrace
- Linux C 编程内存泄露检测工具(一):mtrace
- Linux C 编程内存泄露检测工具(一):mtrace
- Linux C 编程内存泄露检测工具(一):mtrace
- Linux C 编程内存泄露检测工具(一):mtrace
- Linux C 编程内存泄露检测工具(一):mtrace
- linux 编程----内存泄露检测之Valgrind
- linux c 内存泄露检查 mtrace() 笔记
- mtrace--linux下检测由malloc导致内存泄露的工具
- mtrace内存泄露检查
- Linux mtrace命令检测内存泄漏
- linux下检查内存泄露的工具--mtrace
- linux下检查内存泄露的工具 mtrace
- 利用linux的mtrace命令定位内存泄露(Memory Leak)
- ATSHA204
- 快速排序
- 黑马程序员-------反射
- database editor
- 栈的应用之-----行编辑程序
- linux 编程----内存泄露检测之mtrace
- android之解决屏幕大小与密度不同导致的差异
- 【解决】12306网上购票页面加载缓慢
- 怎样使用OpenCV进行人脸识别 [停止更新]
- 香港电台知名主持人梁继璋曾给孩子写过一封信
- 【解决】快速批量删除word文档中的空行
- 设计模式——单一职责原则
- c#中is和as的用法
- 夏秋之季