mtrace学习笔记
来源:互联网 发布:剑魔2觉数据 编辑:程序博客网 时间:2024/03/29 00:00
# mtrace学习笔记
*v0.1 2013.11.22 ****
# 简介:mtrace是一个GNU C库中的内存检测工具,用以检测用户态程序内存泄露(malloc,
realloc, free)。检测的原理为在程序开始时通过mtrace()为malloc等函数安装
handlers[1], malloc等函数执行时就会把相应的信息写到指定文件中(由环境变
量指定)[2],最后由一个perl脚本(/usr/bin/mtrace)解析信息
# 使用过程:
1. 程序中需要包含头文件mchech.h, 在程序开始处调用mtrace()
2. 设定环境变量 export MALLOC_TRACE="mtrace.out"
3. 编译运行程序, 会生成mtrace.out文件
4. mtrace a.out mtrace.out得到内存泄露信息
Memory not freed:
-----------------
Address Size Caller
0x0000000001650490 0x28 at /vm/***/src/mtrace_test/mtrace_test.c:11
0x00000000016504f0 0x28 at /vm/***/src/mtrace_test/mtrace_test.c:13
0x0000000001650550 0xa at /vm/***/src/mtrace_test/mtrace_test.c:15
# /* mtrace_test.c */
#include <stdio.h>
#include <stdlib.h>
#include <mcheck.h>
int main(void)
{
mtrace();
int i;
int *p_0 = (int*)malloc(sizeof(int)*10);
int *p_1 = (int*)malloc(sizeof(int)*10); //
int *p_2 = (int*)malloc(sizeof(int)*10);
int *p_3 = (int*)malloc(sizeof(int)*10); //
int *p_4 = (int*)malloc(sizeof(int)*10);
char *p_char = (char*)malloc(sizeof(char)*10); //
for (i=0; i<10; i++){
p_0[i] = i;
}
for (i=0; i<10; i++){
p_char[i] = 'w';
}
free(p_0);
//free(p_1)
free(p_2);
//free(p_3)
free(p_4);
//free(p_char); //don not free p_char
return 0;
}
# 参考:
[1] http://www.gnu.org/software/libc/manual/html_node/Allocation-Debugging.html
[2] http://www.gnu.org/software/libc/manual/html_node/Hooks-for-Malloc.html
#Hooks-for-Malloc
*v0.1 2013.11.22 ****
# 简介:mtrace是一个GNU C库中的内存检测工具,用以检测用户态程序内存泄露(malloc,
realloc, free)。检测的原理为在程序开始时通过mtrace()为malloc等函数安装
handlers[1], malloc等函数执行时就会把相应的信息写到指定文件中(由环境变
量指定)[2],最后由一个perl脚本(/usr/bin/mtrace)解析信息
# 使用过程:
1. 程序中需要包含头文件mchech.h, 在程序开始处调用mtrace()
2. 设定环境变量 export MALLOC_TRACE="mtrace.out"
3. 编译运行程序, 会生成mtrace.out文件
4. mtrace a.out mtrace.out得到内存泄露信息
Memory not freed:
-----------------
Address Size Caller
0x0000000001650490 0x28 at /vm/***/src/mtrace_test/mtrace_test.c:11
0x00000000016504f0 0x28 at /vm/***/src/mtrace_test/mtrace_test.c:13
0x0000000001650550 0xa at /vm/***/src/mtrace_test/mtrace_test.c:15
# /* mtrace_test.c */
#include <stdio.h>
#include <stdlib.h>
#include <mcheck.h>
int main(void)
{
mtrace();
int i;
int *p_0 = (int*)malloc(sizeof(int)*10);
int *p_1 = (int*)malloc(sizeof(int)*10); //
int *p_2 = (int*)malloc(sizeof(int)*10);
int *p_3 = (int*)malloc(sizeof(int)*10); //
int *p_4 = (int*)malloc(sizeof(int)*10);
char *p_char = (char*)malloc(sizeof(char)*10); //
for (i=0; i<10; i++){
p_0[i] = i;
}
for (i=0; i<10; i++){
p_char[i] = 'w';
}
free(p_0);
//free(p_1)
free(p_2);
//free(p_3)
free(p_4);
//free(p_char); //don not free p_char
return 0;
}
# 参考:
[1] http://www.gnu.org/software/libc/manual/html_node/Allocation-Debugging.html
[2] http://www.gnu.org/software/libc/manual/html_node/Hooks-for-Malloc.html
#Hooks-for-Malloc
0 0
- mtrace学习笔记
- Mtrace
- linux c 内存泄露检查 mtrace() 笔记
- mtrace的使用
- mtrace检查内存泄漏
- mtrace检查内存泄漏
- mtrace内存泄露检查
- dlmalloc mtrace memory leak
- mtrace检查内存泄漏
- mtrace 跟踪内存泄漏
- 利用mtrace检查内存泄漏
- 使用mtrace检查内存溢出
- 利用mtrace检查内存泄漏
- 利用mtrace检查内存泄漏
- mtrace监测程序内存泄露
- 使用mtrace检查内存溢出
- 用mtrace检查内存泄漏
- 用mtrace检查内存泄露
- 广州传智播客以实战教学缩短企业与IT人才的差距
- DB2管理器配置参数(DBM CFG)
- 挠性航天器滑模变结构控制及抖振抑制研究
- Android 保存用户偏好设置
- uva 1346 - Songs(贪心)
- mtrace学习笔记
- 不用库函数实现整数转换为字符串
- 【eclipse】插件安装
- 呃,期末了
- 最小二乘法
- django 创建超级用户
- Linux下的umask函数
- memcpy函数的实现
- Oracle Database XE