通行证│用户名: 密码: 验证码: 验证码,看不清楚?请点击刷新验证码 电信网通铁通移动   在线
文章搜索:
热门搜索:红客 黑鹰 红客技术 安全动画 红客培训
首页 文章 软件 动画 资源 励志 论坛 邮箱 会员 军事 科技 博客 爱心红客 最近更新 800g资源
 业内新闻 漏洞公告 病毒公告 电脑知识 网络知识 菜鸟入门 攻防教程 黑客攻防 安全编程 工具使用 综合安全 个人安全 安全相关 Q Q安全 原创精华 红客人物 站内事件
您现在的位置: 爱国者安全网 >> 文章类 >> 技术文章 >> 网络知识 >> 文章正文
关于Linux操作系统内存泄漏的检查方法
责任编辑:酷酷の鱼   更新日期:2008-3-23
 

来源:赛迪网

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

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

 

  • 上一篇文章:
  • 下一篇文章:
  • 最近更新
    固顶文章 Delphi编程培训班开课了
    普通文章 瑞星公司03月23日发布 每日计算机病毒及木马播报
    推荐文章 推荐:Linux主机服务器被入侵后需采取的措施
    普通文章 教你几个简单方法 防止上网被钓鱼威胁
    普通文章 Linux系统下Oracle主要监控工具介绍
    普通文章 关于Linux操作系统内存泄漏的检查方法
    普通文章 SQL log备份上WEBSHELL总结
    普通文章 alpha2 shellcode解密的vbs脚本
    普通文章 禁止指定程序运行的方法
    普通文章 Mozilla高层炮轰苹果利用补丁通道强装Safari
    热门文章
    普通文章微软发布安全公告修复office12个漏洞
    普通文章Google:敏感个人信息只有极少数人有权接触
    普通文章CNN指中国黑客攻五角大楼 外交部称无依据
    普通文章网银隐身劫匪瞄准工商银行 隐蔽性极强
    普通文章瑞星公司03月13日发布 每日计算机病毒及木马播报
    普通文章Serv-U保存即生效命令
    推荐文章推荐:Windows Server 2003搭建VPN服务器
    普通文章Radmin软件的一次提权技巧
    普通文章雷驰新闻发布管理系统v3.0漏洞很简单
    普通文章PHP难吗?PHP脚本注入的简单步骤
    精彩专题