神器valgrind

标签: 工作故事 | 发表时间:2014-02-13 17:07 | 作者:RobinDong
出处:http://blog.donghao.org

其实早在2006年我就用过valgrind,但当时valgrind不能观测daemon的内存泄漏问题,所以后来渐渐用得少了。

今天又遇到一个内存泄漏问题,程序颇大,手工调试不太现实了,所以又想到了valgrind,毕竟在这7年间,valgrind又强大了不少。查了一下,它已经可以检测daemon进程了,方法在 这里 对应的官方文档在 这里 其中"monitor leak_check full reachable any"相当于设置gdb的breakpoint。

不过,我要调试的这个程序,一运行就fork了,然后子进程负责主要的逻辑,父进程只是等待子进程返回用的,而且,只在运行某个特殊逻辑时出现内存泄漏,平时的逻辑没有问题。怎么弄?折腾了一下,发现可以搞定:首先,在gdb里运行“set follow-fork-mode child”来自动跟踪子进程,然后,一开始不要急着用”monitor leak_check full reachable any"来检测,先"continue“运行一阵子,当开始跑造成内存泄漏的逻辑时,再ctrl+c打断,再”monitor leak_check full reachable any“设上断点,自然会吐出valgrind的memleak信息。

用这两招,果然找到内存泄漏的点了,隐藏颇深,如果不是用工具,真不知何年何月才能发现。感谢valgrind神器,支持vgdb支持daemon检测,真是杀手级的新特性。(我用的是最新的 valgrind-3.9.0,老的valgrind估计不支持)

另外说明一下,我是gdb的小白,以上招数和解释不见得正确或最优,如有行家肯指点,感激不尽。

相关 [神器 valgrind] 推荐:

神器valgrind

- - 斯巴达第二季
其实早在2006年我就用过valgrind,但当时valgrind不能观测daemon的内存泄漏问题,所以后来渐渐用得少了. 今天又遇到一个内存泄漏问题,程序颇大,手工调试不太现实了,所以又想到了valgrind,毕竟在这7年间,valgrind又强大了不少. 查了一下,它已经可以检测daemon进程了,方法在 这里 对应的官方文档在 这里 其中"monitor leak_check full reachable any"相当于设置gdb的breakpoint.

Valgrind的使用方法

- - CSDN博客研发管理推荐文章
        Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等. Valgrind可以检测内存泄漏和内存违例,还可以分析cache的使用等,灵活轻巧而又强大,能直穿程序错误的心脏,真可谓是程序员的瑞士军刀.

linux实用技巧:检测内存泄漏工具Valgrind

- - CSDN博客系统运维推荐文章
1.Valgrind简介.         1.在我们编写C/C++的时候,最常见的错误之一就是内存泄露,这样的问题其实跟程序员的编程习惯密不可分. 如果你在申请内存空间之后能够马上在合适的位置释放内存. 会极大程度的避免内存泄漏的情况. 有时候我们确实忘记释放内存而导致了比较严重的错误,所以这个时候我们需要借助valgrind这个工具来判断内存泄漏.

内存泄漏检查工具valgrind的安装与使用

- - CSDN博客推荐文章
Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件工具套装. 它最流行的工具是Memcheck, 它能检测C/C++中大部分的内存相关的错误. 程序编译时使用 “-g”参数,以添加调试信息,这样Memcheck的错误消息可以精确到行;. 编译时使用“-O0”也有必要,只是速度会很慢,“-O1”可能会导致Memecheck的错误消息不正确;.

C/C++的内存泄漏检测工具Valgrind memcheck的使用经历(求大神解答疑惑,找出内存泄露真凶)

- - CSDN博客综合推荐文章
Linux下的Valgrind真是利器啊(不知道Valgrind的请自觉查看参考文献(1)(2)),帮我找出了不少C++中的内存管理错误,前一阵子还在纠结为什么VS 2013下运行良好的程序到了Linux下用g++编译运行却崩溃了,给出一堆汇编代码也看不懂. 久久不得解过后,想想肯定是内存方面的错误,VS在这方面一般都不检查的,就算你的程序千疮百孔,各种内存泄露、内存管理错误,只要不影响运行,没有读到不该读的东西VS就不会告诉你(应该是VS内部没实现这个内存检测功能),因此用VS写出的程序可能不是完美或健壮的.

JavaScript TDD 神器jasmine

- - JavaScript - Web前端 - ITeye博客
今天参加了圣路易斯本地的一个meet up group. 演讲主题是javascript 的tdd. 演讲者展示了jasmine的功能,真的是神器啊. 以下是jasmine的网址:. jasmine的syntax 极其简单:. 还有很多功能还在探索中,在写2500行的js之前知道这个就好了. 已有 0 人发表留言,猛击->> 这里<<-参与讨论.

前端神器 Sublime Text 2

- - 博客园_首页
  博主之前一直用notepdd++写前端代码,用得也挺顺手了,早就听说sublime的大名,一直也懒得去试试看,认为都是工具用着顺手就好. 这几天突然心血来潮,下了个试了下,结果. 结果博主毫无节操的抛弃了notepad++. 下面根据博主这几天的使用心得,来介绍下这款前端神器,介于使用时间很短,有些说的不妥的地方还望各位看官海涵.

Alfred神器初体验

- - Onlycjeg's Blog
之前一直找不到好用的快捷工具,偶然想起有朋友介绍alfred,今天测试了下,确实神器啊,感觉mac下用的最好用的工具了,没有之一;. 安装完后,一打开都是英文,顿时头都大了,不过静下心来看,还是勉强能了解大概意思的;. 提示开机启动、以及如何调用Alfred,我这里选择按两下command,因为这个功能,本来是用QQ的Swiftly功能的,但是企鹅的做的不是特别专业,虽然功能集成在QQ里面,非常赞;于是果断关闭QQ的Swiftly功能,使用2下command调出可爱的alfred功能.

Mysql 之 show processlist 神器

- - Telami
今天在同步测试数据时,网突然断了,等到重连之后,发现表打不开了. 可以看到表的数据长度已有112192kb,可惜打不开了. 事情往往没这么简单,果然删不掉,truncate也不行,然后navicat卡死,遂登上数据库,执行dorp操作,还是不行. 估计是网络错误,导致了一些奇怪的事情发生. 那么就一起看看,到底发生了什么吧.

myMemoir:电子书制作神器

- Smilebox - 雷锋网
连线杂志主编克里斯·安德森直言不讳地宣称从iPad看到了电子出版的未来. iPad上一款名为myMemoir的应用更加让我相信电子出版将创造新的奇迹. 还停留在用智能设备看电子出版物的阶段吗. 赶紧试试这款强大的应用吧,简单操作几下,它就能让你的角色从读者变成作者. 只要1.99美金就能一圆你的作家梦,是不是很划算.