Solaris下使用mdb检查内存泄露

步骤一:

UMEM_DEBUG=default UMEM_LOGGING=transaction LD_PRELOAD=libumem.so.1 ./spAgent &


步骤二:

-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


步骤四:

> 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函数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值