仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 493|回复: 8
打印 上一主题 下一主题

[其他Linux] 给大家带来Linux下利用mtrace举行内存情况监测

[复制链接]
简单生活 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 16:55:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
网络操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rloginrcp、finger、mail、nslookup
关于内存溢出之类的贫苦大概人人在编写指针对照多的庞大的程序的时分就会碰到。Debug起来也是对照累人。实在Linux体系下有一个利用的工具能够协助来调试的,这就是Mtrace.Mtrace次要可以检测一些内存分派和泄露的失利等。上面我们来进修一下它的用法。
 
  利用Mtrace来调试程序有4个基础的步骤,必要用到GNUC函数库内里的一些帮助的函数功效。
 
  1.在必要跟踪的程序中必要包括头文件,并且在main()函数的最入手下手包括一个函数挪用:mtrace()。因为在main函数的最开首挪用了mtrace(),以是该历程前面的统统分派和开释内存的操纵都能够由mtrace来跟踪和剖析。
 
  2.界说一个情况变量,用来唆使一个文件。该文件用来输入log信息。以下的例子:
 
  $exportMALLOC_TRACE=mymemory.log
 
  3.一般运转程序。此时程序中的关于内存分派和开释的操纵都能够纪录上去。
 
  4.然后用mtrace利用工具来剖析log文件。比方:
 
  $mtracetestmem$MALLOC_TRACE
 
  要注重的是,在良多嵌进式的情况中,其实不供应export命令,也没有纪录情况变量的文件。这时候候岂非就没有举措了么?呵呵,大概,独一的举措就是把情况变量加到使用程序中。在Glibc库中有putenv函数,就是写进情况变量的。详细的请本人查手册。
 
  intputenv(char*string)[Function]
 
  设置好情况变量后。又有一个成绩了:假如程序是自运转的,即没有停止的时分,那想在特定的中央,剖析内存情形,怎样办呢?
 
  呵呵,仍是看Glibc!,挪用muntrace函数,log文件就天生了。这时候用mtrace命令剖析log文件就能够啦。
 
  上面是详细一个例子,人人能够看一下。
 
  [hwang@langchaotest]$cattestmtrace.c
#include
#include
#include
intmain()
{
char*hello;
mtrace();
hello=(char*)malloc(20);
sprintf(hello,"
helloworld!");
return1;
}
[hwang@langchaotest]$exportMALLOC_TRACE=mytrace.log
[hwang@langchaotest]$gcctestmtrace.c-otestmtrace
[hwang@langchaotest]$./testmtrace
[hwang@langchaotest]$mtracetestmtracemytrace.log
Memorynotfreed:
-----------------
AddressSizeCaller
0x080498600x14at/usr/src/build/53700-i386/BUILD/glibc-2.2.4/csu/init.c:0
</p>
Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手。
admin 该用户已被删除
沙发
发表于 2015-1-18 17:13:46 | 只看该作者
查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的问题同样可以解决。
活着的死人 该用户已被删除
板凳
发表于 2015-1-27 13:37:53 | 只看该作者
其实当你安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。
分手快乐 该用户已被删除
地板
发表于 2015-2-5 11:57:09 | 只看该作者
Windows?是图形界面的,Linux类似以前的?DOS,是文本界面的,如果你运行了图形界面程序X-WINDOWS后,Linux?也能显示图形界面,也有开始菜单、桌面、图标等。
若天明 该用户已被删除
5#
发表于 2015-2-11 19:51:27 | 只看该作者
我们这一代90后,从小接触的是windows98,家里条件好的自己有电脑装的是2000,后来又有了XP,上大学时又有了win7。
6#
发表于 2015-3-2 18:11:37 | 只看该作者
你需要提供精确有效的信息。Linux这并不是要求你简单的把成吨的出错代码或者数据完全转储摘录到你的提问中。
若相依 该用户已被删除
7#
发表于 2015-3-11 05:37:05 | 只看该作者
Linux操作系统这个名词记得在很早以前就听过,但当时并不知道具体是什么样的操作系统,只知道是一个与嵌入式密切相关的操作系统。
爱飞 该用户已被删除
8#
发表于 2015-3-17 21:19:25 | 只看该作者
一些显而易见的小错误还是用vi改正比较方便。以后的大一点的程序就得在Linux下调试了,因为有的头文件在VC里面说找不到。?
柔情似水 该用户已被删除
9#
发表于 2015-3-25 03:49:15 | 只看该作者
下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢”这样的问题。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-18 09:18

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表