对于内存溢出之类的麻烦可能大家在编写指针比较多的复杂的程序的时候就会遇到。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使用.doc
mtrace源码-MTrace FOSS
mtrace 测试相关源码
More debugging hooks for `malloc .
mtrace源码-MTrace FOSS.zip
mtrace可以用来 跟踪当前 系统/模块的内存 使用情况 ,以及估算系统/模块的占用内存的极值 , 系统/模块 卸载时的 内存 泄露情况。
分布式会话跟踪系统架构设计与实践 张志桐@美团点评基础架构中心 20160625 链路追踪(调用链路监控)最出名的是谷歌公开的论文提到的Dapper(中文版)。开发Dapper是为了收集更多的复杂分布式系统的行为信息,理解...
改进的mtrace脚本,可以输出动态库中泄漏的行号信息。
对于内存溢出之类的麻烦可能大家在编写指针比较多的复杂的程序的...其实Linux系统下有一个使用的工具可以帮忙来调试的,这就是Mtrace。Mtrace主要能够检测一些内存分配和泄漏的失败等。本文我们来学习一下它的用法。
内存溢出:Linux下用Mtrace来检查程序内存 溢出
使用npm install mtrace : npm install mtrace 生成一个mtrace: var mtrace = require ( 'mtrace' ) ; var filename = mtrace . mtrace ( ) ; if ( filename ) { console . log ( 'Saving mtrace to ' + ...
LINUX基本的程序调试技能及相关工具的使用,包括GDB(DDD)、Mtrace、strace等。
对于嵌入式系统中运行的程序,一般来说程序启动的时候会分配很多内存,然后一直运行下去,不会显式释放这些内存,这部分内存并不会...这些内存有没有泄露,memwatch和dmalloc就不太适合这种处理,mtrace就比较合适。
嵌入式系统下内存泄漏检查库函数mTrace以及测试代码,有详细使用文档.这个是将malloc和free 函数控制起来,检查内存.
LinuxC编程侦测记忆体溢出工具mtrace[参照].pdf
一个可用在嵌入式上检查内存泄露的源代码工具
CALL Lcom/xxx/cc/test/Mtrace; | <clinit> | ()V | 2013/6/13 8:38:46 | Exit Lcom/xxx/cc/test/Mtrace; | <clinit> | ()V | 2013/6/13 8:38:46 | CALL Lcom...
linux 内存泄露排查文档。 介绍mtrace的使用。根据实际问题介绍如果定位问题。
2、测试数据addr_result-3.txt、vmlinux-32在dropbox/kernel/mtrace/data中 3、单独执行“python start.py”生成整张图 4、运行python start.py func_name 生成单个函数相关调用图 注:修改数据路径和vmlinux的...