首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>系统管理>系统管理>正文

Linux系统下使用mtrace进行内存状况监测

http://www.oklinux.cn  2008-03-06  来源: 赛迪网 korn  会员收藏  游客收藏  【 】 

对于内存溢出之类的麻烦可能大家在编写指针比较多的复杂的程序的时候就会遇到。Debug起来也是比较累人。其实Linux系统下有一个使用的工具可以帮忙来调试的,这就是Mtrace。Mtrace主要能够检测一些内存分配和泄漏的失败等。下面我们来学习一下它的用法。

使用Mtrace来调试程序有4个基本的步骤,需要用到GNU C 函数库里面的一些辅助的函数功能。

1.在需要跟踪的程序中需要包含头文件,而且在main()函数的最开始包含一个函数调用:mtrace()。由于在main函数的最开头调用了mtrace(),所以该进程后面的一切分配和释放内存的操作都可以由mtrace来跟踪和分析。

2.定义一个环境变量,用来指示一个文件。该文件用来输出log信息。如下的例子:

$export MALLOC_TRACE=mymemory.log

3.正常运行程序。此时程序中的关于内存分配和释放的操作都可以记录下来。

4.然后用mtrace使用工具来分析log文件。例如:

$mtrace testmem $MALLOC_TRACE

要注意的是,在很多嵌入式的环境中,并不提供export命令,也没有记录环境变量的文件。这时候难道就没有办法了么?呵呵,也许,唯一的办法就是把环境变量加到应用程序中。在Glibc库中有putenv函数,就是写入环境变量的。具体的请自己查手册。

int putenv (char *string) [Function]

设置好环境变量后。又有一个问题了:如果程序是自运行的,即没有终止的时候,那想在特定的地方,分析内存情况,怎么办呢?

呵呵,还是看Glibc!,调用muntrace函数,log文件就生成了。这时用mtrace命令分析log文件就可以啦。

下面是具体一个例子,大家可以看一下。

[hwang@langchao test]$ cat testmtrace.c
#include <>
#include
#include
int main()
{
char *hello;
mtrace();
hello = (char*) malloc(20);
sprintf(hello,"
hello 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
Memory not freed:
-----------------
Address Size Caller
0x08049860 0x14 at /usr/src/build/53700-i386/BUILD/glibc-2.2.4/csu/init.c:0


上一篇:在数据库日渐庞大时应该如何进行归档   下一篇:Windows系统下如何访问Linux分区的文件


收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Windows系统下如何访问Linux分区的文件
·如何修改Linux系统的文件权限
·安全宝典:保障Linux系统安全的九大技巧
·通过监控Linux的运行进程来保证系统安全
·VMware虚拟机Linux系统通过NAT方式上网
·Ubuntu Linux系统下修改文档权限的方法
·Linux系统下配置OPENVZ虚拟机的过程解析
·Tor中继服务器在Linux里安装配置的流程
·Linux系统中如何修改某用户语言环境变量
·Linux系统下一块网卡配置多个Ip地址方法
·Linux系统下蓝牙立体声配置A2DP profile
·Ubuntu Linux系统下常见问题的解决方法
·Linux系统限制用户使用SU切换为其他用户
·Linux系统目录配置标准FHS详细介绍
·Windows XP下从硬盘安装Fedora 8的方法
·VirtualBox下共享文件设置(host linux)
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·在Linux系统下如何调整文件打开方式
·如何在Linux系统下更改文件使用权限
·如何在Linux系统下创建ISO镜像文件
·Linux系统下如何破解PHP加密dezend软件
·Linux下恢复EXT3 Superblock的正确方法
·学习园地:Linux系统的内存管理指南
·软件推荐:开放源代码软件测试工具介绍
·Linux系统下配置OPENVZ虚拟机的过程解
·Ubuntu Linux系统下修改文档权限的方法
·VMware虚拟机Linux系统通过NAT方式上网
·通过监控Linux的运行进程来保证系统安
·安全宝典:保障Linux系统安全的九大技
  阅读排行
·使用源代码将 Glibc 升级到 2.6
·Linux下推荐的常用应用程序列表
·使用 ActiveScaffold 增强 Ruby on Rai
·什么是Linux?Linux与UNIX之间的关系
·应用:postfix邮件服务器安全策略
·提高Linux系统性能加速网络应用程序
·Linux操作系统的内核引导程序详细解析
·Linux用户(User)和用户组管理概述
·在 Linux on POWER 上利用透明大内存页
·Ubuntu Linux操作系统中的用户管理
·使用/proc文件系统来访问Linux内核
·基于linux操作系统架构openvpn总结
·Grub引导程序的安装、配置及使用汇总
·几种Linux嵌入式开发环境的简单介绍
·C++自动化(模板元)编程基础与应用(1)
网摘收藏: