动态网站制作指南
[  QQ表情  ]
[ 投票调查 ]
[ 企业邮箱 ]
[ 网站空间 ]
网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
ASP源码 | .Net源码 | PHP源码 | JSP源码 | JAVA源码 | CGI源码 | VB源码 | C++源码 | Delphi源码 | PB源码 | VF源码 | 汇编 | 服务器
电脑书籍下载:程序设计书籍 | 数据库教程书籍 | 平面与多媒体书籍 | 网络通讯书籍 | 系统管理书籍 | 网络安全书籍 | 认证考试书籍
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 操作系统 > Linux教程
文章搜索服务
邮件订阅
输入你的邮件地址,
你将不会错过任何关于:
[ Linux教程 ]的信息

本月文章推荐
.Linux操作系统集群LVS-ipvsadm命.
.RedHat 6.2 中文显示与输入的设置.
.Linux FTP服务器和SVN服务器的详.
.Ext2和Ext3文件系统.
.Linux操作系统下轻松刻录CD-ROM数.
.全文替换以修改档案方法.
.Linux的防火墙配置—基础篇.
.在RHEL5服务器系统下双网卡使用b.
.WindowsXP Secure CRT登录Linux乱.
.Linux中文件查找方法大全.
.Linux系统下精确到微秒级的时间操.
.为网络启动和软硬件升级建立TFTP.
.详细讲解Linux环境下MySQL 5.1安.
.解决在Ubuntu中无法激活中文输入.
.基于Linux系统核心的汉字显示尝试.
.RPM 的使用.
.Linux 网管 123 --- 第9章. 各种.
.Ethernet HOWTO Linux以太网-HOW.
.vi介绍编 (2) 参数简介.
.如何共享两台Linux操作系统的根目.

关于Linux操作系统下内存泄漏的检查方法

文章类别:Linux教程 | 发表日期:2008-3-20 |


 

1. 在需要内存泄漏检查的代码的开始调用void mtrace(void) (在mcheck.h中? 有声明). mtrace为malloc等函数安装hook, 用于记录内存分配信息.在需要内存泄漏检查的代码的结束调用void muntrace(void).

注意: 一般情况下不要调用muntrace, 而让程序自然结束. 因为可能有些释放内存代码要到muntrace之后才运行.

2. 用debug模式编译被检查代码(-g或-ggdb)

3. 设置环境变量MALLOC_TRACE为一文件名, 这一文件将存有内存分配信息.

4. 运行被检查程序, 直至结束或muntrace被调用.

5. 用mtrace命令解析内存分配Log文件($MALLOC_TRACE)

(mtrace foo $MALLOC_TRACE, where foo is the executible name)

如果有内存泄漏, mtrace会输出分配泄漏

内存的代码位置,以及分配数量.

附加说明

1. 可以将mtrace, muntrace放入信号处理函数(USR1, USR2), 以动态地进行内存泄漏检查控制.

2. mtrace是个perl代码, 如果你对符号地址与代码文本的转换感兴趣, 可以读一下.

3. again, 尽量不要用muntrace()

For C++ Leak:

检查内存泄漏的方法除glibc提供外;还可以试试一些专用的程序。

很奇怪,redhat 9 居然不带mtrace perl脚本,只好下载gcc源码编译了

wget --passive-ftp ftp://rpmfind.net/linux/redhat/9 ... -2.3.2-11.9.src.rpm

rpm -ivh glibc*.src.rpm

cd /usr/src/redhat/SPECS/

rpmbuild -ba glibc-9.spec

cd /var/tmp/glibc-2.3.2-root/usr/bin/

cp mtrace /usr/bin/

调试方法如下:

vi a.c

1 #include

2

3 int main()

4 {

5 mtrace();

6 malloc(10);

7 malloc(16);

8 return 0;

9 }

$gcc -g a.c #记得编译带-g调试选项

$export MALLOC_TRACE=a.log

$./a.out

$unset MALLOC_TRACE #记得执行完后unset变量,否则可能运行其他命令可能覆盖log

$mtrace a.out a.log

Memory not freed:

-----------------

Address Size Caller

0x09b08378 0xa at /XXX/a.c:6

0x09b08388 0x10 at /XXX/a.c:7

可以看到,会显示未释放动态空间的代码具体位置。


上一篇:学习园地:Linux ext2/ext3文件系统详解 人气:242
下一篇:关于Linux操作系统下C语言编程注意事项 人气:240
点击此处浏览全部Linux的内容 Dreamweaver插件下载 常用网页广告代码全集
  最新网站源码 最新软件下载
2008-5-12 team论坛 v2.0.2 ACC+SQL 正式版
2008-5-12 网趣网上购物系统时尚版 v7.8
2008-5-12 geeklog v1.5.0 beta1
2008-5-12 鼎峰企业智能建站系统ASP版 v0.3
2008-5-12 NetCMS v1.5 Build 2008.05.09 正
2008-5-12 NetCMS v1.5 Build 2008.05.09 源
2008-5-12 风之相随留言簿 v2.2 Build080511
2008-5-12 傲龙防CC攻击插件 ASP版 v2.1
2008-5-12 乐学LBBS无限级目录图片直读系统
2008-5-7 Windows XP SP3 官方英文版
2008-5-7 Windows XP SP3 官方香港中文版
2008-5-7 Windows XP SP3 官方繁体中文版
2008-5-7 Windows XP SP3 官方简体中文版
2008-4-30 Multiple Unzip Wizard 1.02
2008-4-30 Multiple Unrar Wizard 1.0.0
2008-4-30 WinZip Install/Try/Uninstall a
2008-4-30 ZIP压缩文件修复器WzipFix 2.0
2008-4-30 Pentazip 6.01 Build 189 For Wi
  发表评论
姓 名: 验证码: [ 全部贴吧 ] [ 浏览评论 ]
内 容:
[ 汉字翻译拼音 ] [ 广告代码 ] [ 符号对照表 ] [ 进制转换 ] [ 经典小工具 ] [ 个税计算 ] [ 汉字简繁转换 ] [ 普通单位换算 ] [ 公制单位换算 ]
[ 生辰老黄历 ] [ 国内电话区号 ] [ 国家代码与域名缩写 ] [ 文字加密解密 ] [ 健康查询 ] [ 万年历 ] [ 手机号码查询 ] [ ip搜索 ] [ Google PR查询 ]
业务联系 | 广告刊登 | 频道合作 | 投稿荐稿 | 联系方式 | 加入收藏 | RSS订阅
Copyright © 2000-2008 www.knowsky.com All rights reserved | 网络实名:动态网站制作指南 | 沪ICP备05001343号
ホームページ制作 不動産検索システム 求人情報