如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
教你如何检查inux操作系统的内存教你如何检查inux操作系统的内存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-ftpftp://rpmfind.net/linux/redhat/9...-2.3.2-11.9.src.rpmrpm-ivhglibc*.src.rpmcd/usr/src/redhat/SPECS/rpmbuild-baglibc-9.speccd/var/tmp/glibc-2.3.2-root/usr/bin/cpmtrace/usr/bin/调试方法如下:via.c1#include23intmain()4{5mtrace();6malloc(10);7malloc(16);8return0;9}$gcc-ga.c#记得编译带-g调试选项$exportMALLOC_TRACE=a.log$./a.out$unsetMALLOC_TRACE#记得执行完后unset变量,否则可能运行其他命令可能覆盖log$mtracea.outa.logMemorynotfreed:-----------------AddressSizeCaller0x09b083780xaat/XXX/a.c:60x09b083880x10at/XXX/a.c:7可以看到,会显示未释放动态空间的代码具体位置。
明轩****la
实名认证
内容提供者
最近下载