首页 > 系统服务 > 详细

linux下内存泄漏整理

时间:2020-08-20 18:12:04      阅读:74      评论:0      收藏:0      [点我收藏+]

了解到的工具有如下几个

valgrind(最强大)

mtrace(linux gnu自带,但是只能检测malloc和free)

debug_new(针对c++,重载operator new,placement new实现的),原理地址https://www.ibm.com/developerworks/cn/linux/l-mleak2/index.html

还有个命令malloc_stats(),可以在程序里或者gdb调用,可以查看堆内存的静态统计,在gdb中使用call malloc_stats()

下面介绍下valgrind,内存泄漏用的是memcheck,非常强大,但非常重量级,如果程序本身消耗资源(线程较多或其他),可能不能正常或流畅的跑起来

使用valgrind --tool=memcheck --leak-check=full ./exe 即可,停止的时候会把可能泄露的地方列出来

另外可以使用gdb内加在valg,然后可以输一些valg的命令功能更加强大

who_points_at这个可以查看一块内存是属于哪个指针的命令,那么就能找到申请的地方。这个功能我问了很多人都不知道,对于排查内存泄漏很有用

更详细的文档地址

https://stackoverflow.com/questions/12663283/dumping-contents-of-lost-memory-reported-by-valgrind

https://www.valgrind.org/docs/manual/mc-manual.html/manual-core-adv.html#manual-core-adv.gdbserver-commandhandling官方文档,很全

linux下内存泄漏整理

原文:https://www.cnblogs.com/wangshaowei/p/13535998.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!