Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等。Valgrind可以检测内存泄漏和内存违例,还可以分析cache的使用等,灵活轻巧而又强大,能直穿程序错误的心脏,真可谓是程序员的瑞士军刀。
一、Valgrind的主要功能
Valgrind工具包包...
分类:
其他好文 时间:
2014-10-15 16:28:11
阅读次数:
215
最早的时候是在程序初始化过程中开启了一个timer(timer_create),这个timer第一次触发的时间较短时就会引起程序core掉,core的位置也是不定的。使用valgrind可以发现有错误的内存写入:
==31676== Invalid write of size 8
==31676== at 0x37A540F852: _dl_allocate_tls_init (in /l...
分类:
其他好文 时间:
2014-10-08 00:01:44
阅读次数:
363
继上次重载operator new检测内存泄漏失败之后,妥协了。决定不管是否是准确指明哪一行代码出现内存泄漏,只要告诉我是否有泄漏就行了,这样就没有new替换的问题。在开发中,总是一个个小功能的开发。如果开发完一个小功能告诉我有内存泄漏,那想必也是比较容易找的。 这次的想法是重写operato...
分类:
其他好文 时间:
2014-10-02 16:36:43
阅读次数:
202
04-常见内存错误以及valgrind使用
代码段:
只读数据,因此对这一部分的数据,试图写只读数据,这个在编译的时候基本上可以检测。
数据段/BSS段:
未初始化直接访问,即使没有显示初始化,仍然会初始化为0
栈空间数据:
(1)局部变量,未初始化变量会给随机的初值,出现异常情况更诡异
(2)栈溢出:在栈中申请过大的局部变量
堆空间数据
内...
分类:
其他好文 时间:
2014-09-28 18:41:43
阅读次数:
350
Linux/Unix用valgrind检测内存泄漏...
分类:
系统相关 时间:
2014-09-17 23:22:19
阅读次数:
365
最近服务器程序出了一个崩溃,确定是内存地址访问越界,但是不能定位在哪里,没办法只好用valgrind来跑一下,以前公司的服务器是上都默认安装了,突然发现云服务器上没有安装这个软件,所以记录一下如何安装。 1、下载最新版本的valgrind: http://www.valgrind.org/downloads/valgrind-3.9.0.tar.bz2 解压安装...
分类:
系统相关 时间:
2014-09-11 19:23:02
阅读次数:
292
Linux c/c++上常用内存泄露检测工具有valgrind, Rational ?purify。Valgrind免费。Valgrind 可以在 32 位或 64 位 PowerPC/Linux 内核上工作。 Valgrind工具包包含多个工具,如Memcheck,Cachegrind,Helgrind, ?...
分类:
系统相关 时间:
2014-08-29 13:17:08
阅读次数:
303
译至:http://www.valgrind.org/docs/manual/quick-start.html...
分类:
其他好文 时间:
2014-08-27 11:04:17
阅读次数:
253
Valgrind的多线程调试工具 Helgrind是Valgrind的一个重点功能 本节主要针对与多线程基本安全问题进行检测:【所有的代码环境都是在POSIX_THREAD模式下】 写线程代码时 经常碰到如下问题1) 资源不安全访问 【就是多个线程在没有同步的情况下写某个资源体】2) 死锁问题 3)...
分类:
编程语言 时间:
2014-08-23 21:32:01
阅读次数:
353
1.Valgrind简介 1.在我们编写C/C++的时候,最常见的错误之一就是内存泄露,这样的问题其实跟程序员的编程习惯密不可分。如果你在申请内存空间之后能够马上在合适的位置释放内存。会极大程度的避免内存泄漏的情况。但是人非圣贤,孰能无过。有时候我们确实忘记释放内存而导致了比较严重的错误,所以这个时...
分类:
系统相关 时间:
2014-08-11 14:36:32
阅读次数:
190