先#include <mcheck.h>
在需要检查内存泄漏的代码开始处加入
mtrace();
在需要检查内存泄漏的代码结束处加入
muntrace();
修改完成。
在bash中,设置环境变量MALLOC_TRACE,例如:
export MALLOC_TRACE=/tmp/mtrace
然后执行你的程序。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<mcheck.h>
int main(void)
{
char *hello;
mtrace();
hello = (char*) malloc(20);
sprintf(hello,"hello world!");
free(hello);
return 1;
}
[*****@localhost test]$ mtrace a.out $MALLOC_TRACE
No memory leaks.
[*****@localhost test]$ cat $MALLOC_TRACE
= Start
@ ./a.out:[0x8048433] + 0x9da4378 0x14
@ ./a.out:[0x8048457] - 0x9da4378
详见:http://en.wikipedia.org/wiki/Mtrace
如果mtrace不可用安装glibc-utils的安装包,要和libc的版本号一样(通过rpm -q glibc来获取glibc的版本号),例如我的机器显示如下:
root@localhost ~]# rpm -q glibc
glibc-2.3.4-2.25
我的机器环境是CentOS4.4 (VMware),需下载glibc-utils-2.3.4-2.25.i386.rpm安装包,地址:
http://glitesoft.cern.ch/cern/slc48/i386/yum/updates/repodata/repoview/glibc-utils-0-2.3.4-2.25.html
因为安装上面数据包时提示如下错误:
[root@localhost ~]# rpm -ivh glibc-utils-2.3.4-2.25.i386.rpm
warning: glibc-utils-2.3.4-2.25.i386.rpm: V3 DSA signature: NOKEY, key ID 0c98ff9d
error: Failed dependencies:
libgd.so.2 is needed by glibc-utils-2.3.4-2.25.i386
Suggested resolutions:
/home/buildcentos/CENTOS/en/4.0/i386/CentOS/RPMS/gd-2.0.28-4.4E.1.i386.rpm
所以下载libgd2-2.0.33-3aei_cl.i386.rpm安装包,地址:http://rpmfind.net/linux/rpm2html/search.php?query=libgd.so.2
最终安装顺序如下:
[root@localhost ~]# rpm -ivh libgd2-2.0.33-3aei_cl.i386.rpm
warning: libgd2-2.0.33-3aei_cl.i386.rpm: V3 DSA signature: NOKEY, key ID 0041a1fb
Preparing... ########################################### [100%]
1:libgd2 ########################################### [100%]
[root@localhost ~]# rpm -ivh glibc-utils-2.3.4-2.25.i386.rpm
warning: glibc-utils-2.3.4-2.25.i386.rpm: V3 DSA signature: NOKEY, key ID 0c98ff9d
Preparing... ########################################### [100%]
1:glibc-utils ########################################### [100%]
[root@localhost ~]# mtrace --version
mtrace (GNU libc) 2.3.4
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Ulrich Drepper <drepper@gnu.org>
祝大家顺利。也多分享一下使用mtrace的经验
在需要检查内存泄漏的代码开始处加入
mtrace();
在需要检查内存泄漏的代码结束处加入
muntrace();
修改完成。
在bash中,设置环境变量MALLOC_TRACE,例如:
export MALLOC_TRACE=/tmp/mtrace
然后执行你的程序。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<mcheck.h>
int main(void)
{
char *hello;
mtrace();
hello = (char*) malloc(20);
sprintf(hello,"hello world!");
free(hello);
return 1;
}
[*****@localhost test]$ mtrace a.out $MALLOC_TRACE
No memory leaks.
[*****@localhost test]$ cat $MALLOC_TRACE
= Start
@ ./a.out:[0x8048433] + 0x9da4378 0x14
@ ./a.out:[0x8048457] - 0x9da4378
详见:http://en.wikipedia.org/wiki/Mtrace
如果mtrace不可用安装glibc-utils的安装包,要和libc的版本号一样(通过rpm -q glibc来获取glibc的版本号),例如我的机器显示如下:
root@localhost ~]# rpm -q glibc
glibc-2.3.4-2.25
我的机器环境是CentOS4.4 (VMware),需下载glibc-utils-2.3.4-2.25.i386.rpm安装包,地址:
http://glitesoft.cern.ch/cern/slc48/i386/yum/updates/repodata/repoview/glibc-utils-0-2.3.4-2.25.html
因为安装上面数据包时提示如下错误:
[root@localhost ~]# rpm -ivh glibc-utils-2.3.4-2.25.i386.rpm
warning: glibc-utils-2.3.4-2.25.i386.rpm: V3 DSA signature: NOKEY, key ID 0c98ff9d
error: Failed dependencies:
libgd.so.2 is needed by glibc-utils-2.3.4-2.25.i386
Suggested resolutions:
/home/buildcentos/CENTOS/en/4.0/i386/CentOS/RPMS/gd-2.0.28-4.4E.1.i386.rpm
所以下载libgd2-2.0.33-3aei_cl.i386.rpm安装包,地址:http://rpmfind.net/linux/rpm2html/search.php?query=libgd.so.2
最终安装顺序如下:
[root@localhost ~]# rpm -ivh libgd2-2.0.33-3aei_cl.i386.rpm
warning: libgd2-2.0.33-3aei_cl.i386.rpm: V3 DSA signature: NOKEY, key ID 0041a1fb
Preparing... ########################################### [100%]
1:libgd2 ########################################### [100%]
[root@localhost ~]# rpm -ivh glibc-utils-2.3.4-2.25.i386.rpm
warning: glibc-utils-2.3.4-2.25.i386.rpm: V3 DSA signature: NOKEY, key ID 0c98ff9d
Preparing... ########################################### [100%]
1:glibc-utils ########################################### [100%]
[root@localhost ~]# mtrace --version
mtrace (GNU libc) 2.3.4
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Ulrich Drepper <drepper@gnu.org>
祝大家顺利。也多分享一下使用mtrace的经验