Linux下的内存泄漏检测工具记录

拷贝自https://github.com/anjuke/zguide-cn/blob/master/chapter2.md

 

任何长时间运行的程序都应该妥善的管理内存,否则最终会发生内存溢出,导致程序崩溃。如果你所使用的编程语言会自动帮你完成内存管理,那就要恭喜你了。但若你使用类似C/C++之类的语言时,就需要自己动手进行内存管理了。下面会介绍一个名为valgrind的工具,可以用它来报告内存泄露的问题。

  • 在Ubuntu或Debian操作系统上安装valgrind:sudo apt-get install valgrind

  • 缺省情况下,ZMQ会让valgrind不停地报错,想要屏蔽警告的话可以在编译ZMQ时使用ZMQ_MAKE_VALGRIND_HAPPY宏选项:

$ cd zeromq2
$ export CPPFLAGS=-DZMQ_MAKE_VALGRIND_HAPPY
$ ./configure
$ make clean; make
$ sudo make install
  • 应用程序应该正确地处理Ctrl-C,特别是对于长时间运行的程序(如队列装置),如果不这么做,valgrind会报告所有已分配的内存发生了错误。

  • 使用-DDEBUG选项编译程序,这样可以让valgrind告诉你具体是哪段代码发生了内存溢出。

  • 最后,使用如下方法运行valgrind:

valgrind --tool=memcheck --leak-check=full someprog

解决完所有的问题后,你会看到以下信息:

==30536== ERROR SUMMARY: 0 errors from 0 contexts...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值