知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

Solaris下使用mdb检查内存泄露

发布时间:2014-09-05 15:16:54作者:知识屋

Solaris下使用mdb检查内存泄露
 
步骤一:
UMEM_DEBUG=default UMEM_LOGGING=transaction LD_PRELOAD=libumem.so.1 ./spAgent &
  www.zhishiwu.com  
步骤二:
-bash-3.00$ mdb -p 16546 //上面得到进程ID
Loading modules: [ ld.so.1 libumem.so.1 libc.so.1 ]
 
步骤三:
-bash-3.00$ mdb -p 16546
Loading modules: [ ld.so.1 libumem.so.1 libc.so.1 ]
> ::findleaks //查找内存泄露
CACHE     LEAKED   BUFCTL CALLER
00484008   11489 00a7f428 libstdc++.so.6.0.3`_Znwj+0x1c
----------------------------------------------------------------------
   Total   11489 buffers, 5147072 bytes
  www.zhishiwu.com  
步骤四:
> 00a7f428::bufctl_audit  //查看最后使用这内存地址的调用堆栈
            ADDR          BUFADDR        TIMESTAMP           THREAD
                            CACHE          LASTLOG         CONTENTS
          a7f428           a85a00   2185ef54480864               47
                           484008           3165dc                0
                 libumem.so.1`umem_cache_alloc+0x13c
                 libumem.so.1`umem_alloc+0x60
                 libumem.so.1`malloc+0x28
                 libstdc++.so.6.0.3`_Znwj+0x1c
                 _ZN6RXConn17HandleSMPPDeliverEPK7AIChunki+0x510
                 _ZN6RXConn10RecvThreadEv+0x6c4
                 _ZN6RXConn4RecvEPv+0x20
                 libc.so.1`_lwp_start
 
通过以上步骤基本可以定位内存泄露发生在xx函数。
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜