如何在Solaris上检测内存泄露
来源:互联网 发布:mac的右键不能用了 编辑:程序博客网 时间:2024/05/22 07:44
http://blog.csdn.net/hotsolaris/archive/2008/03/10/2163306.aspx
众所周知,mdb和dtrace是Solaris上的两把利剑。mdb不仅可以事实观察内核中事实的运行状态,也可以对应用程序进行调试。坚持内存泄露可能对大部分开发人员都是一件头疼的事情,借助mdb的帮助,可以很方便的检查出程序的内存泄露。_5N UfC&i {H
uon,Px|8B_ek
在介绍之前,先介绍一下libmum,libmum是一个对内存进行检测的库,如果想使用mdb检查内存泄露,在程序运行时需要加载libmum库。-W+WX_u.rU#q
export UMEM_DEBUG=default
export UMEM_LOGGING=transaction,yOTb%s/g:D
export LD_PRELOAD=libumem.so.1
m)H2V;b nrnYk4U
下面这个程序有明星的内存泄露。申请的内存没有被释放掉。
使用ps -ef 找到运行程序的pid,使用gcore生成一个core文件,利用mdb打开core文件
bash-3.2# mdb core.237*S2^2E*w|d)@
Loading modules: [ libumem.so.1 ld.so.1 ]4u.i5{TC%Vw
> ::findleaks
CACHE LEAKED BUFCTL CALLER#d*uz4k:Z5@/xphb5a
0806a290 1 0807f200 libstdc++.so.6.0.3`_Znwj+0x29x&`wvXcRGF(y
0806a290 60 0807f2f0 libstdc++.so.6.0.3`_Znwj+0x29
------------------------------------------------------------------------7M4s'kP7`,q
Total 61 buffers, 976 bytes5F1E-ya t3{)L]2R
>Bv8[a xt1Ez1f
可以看到libstdc++.so.6.0.3`_Znwj+0x29有60个leaked,根据bufctl的地址查看bufctl的信息。
> 0807f2f0::bufctl -vdZXI {,w!k H%p#a
ADDR BUFADDR TIMESTAMP THREAD
CACHE LASTLOG CONTENTS/N L9OI!u7ipZV{
807f2f0 8079fa0 ad78129dfba5 1(~V.Z.@M k
806a290 0 00V3E)H R@~
libumem.so.1`umem_cache_alloc_debug+0x144
libumem.so.1`umem_cache_alloc+0x153
libumem.so.1`umem_alloc+0xcd
libumem.so.1`malloc+0x2a/X [#vvV7W@
libstdc++.so.6.0.3`_Znwj+0x29
main+0x27
_start+0x80
[align=center][attach]871[/attach][/align]
- 如何在Solaris上检测内存泄露
- 如何在solaris上检测内存泄露
- 如何检测内存泄露?
- 如何检测内存泄露
- 如何检测内存泄露
- 如何在Android Studio中使用LeakCanary检测内存泄露
- 如何在vs下linux下检测内存泄露
- 如何检测S60内存泄露
- vc++ 如何检测内存泄露
- C++内存泄露如何检测?
- 如何有效检测内存泄露
- 在开发大型项目的时候,如何进行内存泄露检测的? 内存泄露怎么处理?
- Windows CE 上的内存泄露检测
- Valgrind 检测linux上c++内存泄露
- 如何检测C/C++程序内存泄露
- 体验LeakCanary如何做内存泄露检测
- 在VC++中启用内存泄露检测
- Qt在VS中的内存泄露检测
- VisualSVN Server的配置和使用方法
- TC 下编译时出现Expression syntax in function main错误
- Arm学习我总结的几点经验
- Adapter 模式 - Class Adapter
- 深拷贝和浅拷贝
- 如何在Solaris上检测内存泄露
- VSTO运行VBA代码
- 批处理百科名片
- 用 MinGW 编译 Fluent UDF 的问题
- Strategy 模式
- 批处理网站【待更新】
- 8个工作使用而有趣的linux脚本
- sys.standard包
- ARM体系结构中的存储系统