给大家带来Linux下利用mtrace举行内存情况监测
网络操作命令: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)
设置好情况变量后。又有一个成绩了:假如程序是自运转的,即没有停止的时分,那想在特定的中央,剖析内存情形,怎样办呢?
呵呵,仍是看Glibc!,挪用muntrace函数,log文件就天生了。这时候用mtrace命令剖析log文件就能够啦。
上面是详细一个例子,人人能够看一下。
$cattestmtrace.c
#include
#include
#include
intmain()
{
char*hello;
mtrace();
hello=(char*)malloc(20);
sprintf(hello,"
helloworld!");
return1;
}
$exportMALLOC_TRACE=mytrace.log
$gcctestmtrace.c-otestmtrace
$./testmtrace
$mtracetestmtracemytrace.log
Memorynotfreed:
-----------------
AddressSizeCaller
0x080498600x14at/usr/src/build/53700-i386/BUILD/glibc-2.2.4/csu/init.c:0
</p>
Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手。 查阅经典工具书和Howto,特别是Howto是全球数以万计的Linux、Unix的经验总结非常有参考价值通常40%的问题同样可以解决。 其实当你安装了一个完整的Linux系统后其中已经包含了一个强大的帮助,只是可能你还没有发现和使用它们的技巧。 Windows?是图形界面的,Linux类似以前的?DOS,是文本界面的,如果你运行了图形界面程序X-WINDOWS后,Linux?也能显示图形界面,也有开始菜单、桌面、图标等。 我们这一代90后,从小接触的是windows98,家里条件好的自己有电脑装的是2000,后来又有了XP,上大学时又有了win7。 你需要提供精确有效的信息。Linux这并不是要求你简单的把成吨的出错代码或者数据完全转储摘录到你的提问中。 Linux操作系统这个名词记得在很早以前就听过,但当时并不知道具体是什么样的操作系统,只知道是一个与嵌入式密切相关的操作系统。 一些显而易见的小错误还是用vi改正比较方便。以后的大一点的程序就得在Linux下调试了,因为有的头文件在VC里面说找不到。? 下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢”这样的问题。
页:
[1]