|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
买一本命令参考手册是必要的,遇到不知道怎么用的命令可以随时查询,这要比查man文档快.特别适合英语不好。
1.在必要内存泄露反省的代码的入手下手挪用voidmtrace(void)(在mcheck.h中?有声明)。mtrace为malloc等函数安装hook,用于纪录内存分派信息。在必要内存泄露反省的代码的停止挪用voidmuntrace(void)。
注重:一样平常情形下不要挪用muntrace,而让程序天然停止。由于大概有些开释内存代码要到muntrace以后才运转。
2.用debug形式编译被反省代码(-g或-ggdb)
3.设置情况变量MALLOC_TRACE为一文件名,这一文件将存有内存分派信息。
4.运转被反省程序,直至停止或muntrace被挪用。
5.用mtrace命令剖析内存分派Log文件($MALLOC_TRACE)
(mtracefoo$MALLOC_TRACE,wherefooistheexecutiblename)
假如有内存泄露,mtrace会输入分派泄露
内存的代码地位,和分派数目。
附加申明
1.能够将mtrace,muntrace放进旌旗灯号处置函数(USR1,USR2),以静态地举行内存泄露反省把持。
2.mtrace是个perl代码,假如你对标记地点与代码文本的转换感乐趣,能够读一下。
3.again,只管不要用muntrace()
ForC++Leak:
反省内存泄露的办法除glibc供应外;还能够尝尝一些公用的程序。
很奇异,redhat9竟然不带mtraceperl剧本,只好下载gcc源码编译了
wget――passive-ftplinux/redhat/9">ftp://rpmfind.net/linux/redhat/9……-2.3.2-11.9.src.rpm
rpm-ivhglibc*.src.rpm
cd/usr/src/redhat/SPECS/
rpmbuild-baglibc-9.spec
cd/var/tmp/glibc-2.3.2-root/usr/bin/
cpmtrace/usr/bin/
调试办法以下:
via.c
1#include
2
3intmain()
4{
5mtrace();
6malloc(10);
7malloc(16);
8return0;
9}
$gcc-ga.c#记得编译带-g调试选项
$exportMALLOC_TRACE=a.log
$./a.out
$unsetMALLOC_TRACE#记得实行完后unset变量,不然大概运转其他命令大概掩盖log
$mtracea.outa.log
Memorynotfreed:
-----------------
AddressSizeCaller
0x09b083780xaat/XXX/a.c:6
0x09b083880x10at/XXX/a.c:7
能够看到,会显现未开释静态空间的代码详细地位</p>
无论图形界面发展到什么水平这个原理是不会变的,Linux命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。 |
|