来看看:关于Linux体系下内存泄露的反省办法
买一本命令参考手册是必要的,遇到不知道怎么用的命令可以随时查询,这要比查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命令有许多强大的功能:从简单的磁盘操作、文件存取、到进行复杂的多媒体图象和流媒体文件的制作。 Linux操作系统这个名词记得在很早以前就听过,但当时并不知道具体是什么样的操作系统,只知道是一个与嵌入式密切相关的操作系统。 现在的linux操作系统如redhat,难点,红旗等,都是用这么一个内核,加上其它的用程序(包括X)构成的。 在学习linux的工程中,linux学习方法有很多种,这里是小编的学习心得,给大家拿出来分享一下。 硬盘安装及光盘安装,清楚了解安装Linux应注意的有关问题,如安装Linux应在最后一个分区内,至少分二个分区。 我们自学,就这个循环的过程中,我们学习了基本操作,用vi,shell,模拟内存的分配过程等一些OS管理。 下面看看一个让人无法回答的问题:“救命各位高手,向你们请教一些问题:如何在Linux下配制HTTP、FTP、Samba、DNS、DHCP、Sendmail服务器,谢谢”这样的问题。 不同于Windows?系统需要花钱购买,因为Linux的核心是免费的,自由使用的,核心源代码是开放的。 学习Linux,应该怎样学,主要学些什么,一位Linux热心学习者,一段学习Linux的风云经验,历时十二个小时的思考总结,近十位网络Linux学习者权威肯定,为您学习Linux指明方向。
页:
[1]