|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手。 |
|