虽然GDB调试工具功能强大,但对于平时做题调试的使用并不方便,这里尝试学习使用比较简单的valgrind工具

Valgrind是一个提供程序调试及性能分析的工具集。其包含的工具主要有Memcheck,Cachegrind,Callgrind,Massif等。其中,最为常用的是Memcheck,其主要用来检查程序heap上的内存使用情况

首先是安装

在终端输入sudo apt-get install valgrind进行安装

安装完成后即可使用

使用方法是,对编译后的程序如a.out

使用命令valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./a.out 这里默认a.out在系统根目录下

直接使用valgrind ./a.out好像也可以

运行程序过程中若有内存错误或者泄漏都会显示出来在哪一行

以下摘抄一些说明

1. ==2014== 表示进程号信息,基本没用。 2. 接下来是Memcheck的版权声明信息。
3. 详细的报错信息,如at 0x4009C6: main (test.cpp:7) Address 0x4a2005c is 4
bytes after a block of size 40 alloc'd
说明test.cpp的第7行发生内存访问越界,越界的位移为4。 4. ERROR SUMMARY下面为错误汇总信息。
5. 接着是内存泄漏信息。说明有40byte的内存泄漏。 6. LEAK SUMMARY为内存泄漏信息。 在LEAK SUMMARY中:
 definitely lost:表明没有任何指针指向该区域,已经造成了内存泄漏。  possibly lost:存在指针指向内存中的某个位置,valgrind认为你有可能
是在做一些其他的高级应用(将指针放在申请的内存块中间)
 still reachable:仍有指针引用该内存块,只是没有释放而已,可以通过设
置—show-reachable=yes来报错。

Valgrind常用命令参数
1. --tool=<name> [default=memcheck]
--tool参数指明所要使用valgrind的哪一个工具,默认的为memcheck。因为
大多数情况下我们只会用到memcheck工具,因此该参数可以不写。
2. --leak-check=<no|summary|yes|full>[default:summary] 在退出时检查是否有泄漏。Summary只是告诉我们有多少次泄漏,yes或full会告诉我们每次泄漏的详细信息。 
3. --show-reachable=<yes|no>[default:no]
通过设定该参数为yes,则显示still reachable类型的内存泄漏信息。

初试valgrind内存调试工具的更多相关文章

  1. valgrind 内存调试工具

    一.valgrind 是运行在linux系统下的内存调试工具,支持很多对象:memcheck.addrcheck.cachegrind.Massif.helgrind.Callgrind等.使用val ...

  2. Valgrind,内存调试工具

    Valgrind是一款用于内存调试.内存泄漏检测以及性能分析的软件开发工具 官网:http://valgrind.org/ 用户开发手册地址:http://valgrind.org/docs/manu ...

  3. valgrind 内存检测与调用图生成

    http://blog.csdn.net/destina/article/details/6198443  感谢作者的分享! 一  valgrind是什么? Valgrind是一套Linux下,开放源 ...

  4. c++Valgrind内存检测工具---19

    原创博文,转载请标明出处--周学伟  http://www.cnblogs.com/zxouxuewei/ 一.Valgrind 概述 Valgrind是一套Linux下,开放源代码(GPL V2)的 ...

  5. Valgrind 内存泄漏工具

    Valgrind 是一款 Linux下(支持 x86.x86_64和ppc32)程序的内存调试工具,它可以对编译后的二进制程序进行内存使用监测(C语言中的malloc和free,以及C++中的new和 ...

  6. 内存调试工具Electric Fence

    源码下载地址 注:官方地址下载不了,可能不再维护了,此是一个老项目 efence中相关环境变量控制: 302 /* 303 * See if the user wants to allow mallo ...

  7. Qt Creator Valgrind内存分析前端(分析Nginx内存)

    Linux上使用Qt Creator进行C/C++开发http://my.oschina.net/eechen/blog/166969Qt Creator GDB调试前端(调试Nginx):http: ...

  8. JVM常用启动参数+常用内存调试工具

    一.JVM常用启动参数 -Xms:设置堆的最小值. -Xmx:设置堆的最大值. -Xmn:设置新生代的大小. -Xss:设置每个线程的栈大小. -XX:NewSize:设置新生代的初始值. -XX:M ...

  9. linux下内存调试工具——valgrind

    1.valgrind之memcheck  最常用的工具,用来检测程序中出现的内存问题,所有对内存的读写都会被检测到,一切对malloc()/free()/new/delete的调用都会被捕获.所以,它 ...

随机推荐

  1. Git 初体验

    第一次接触git的时候,一直在纳闷git和github的区别,解释下,git是版本管理工具,github是开源共享平台,个人这么理解,理解这么多就行了 先说git吧,下载git客户端,地址:http: ...

  2. 微信扫一扫JSSDK 扫一扫报错 invalid signature 问题

    交代一下业务场景 在在四个页面都需要用到扫一扫去扫二维码.然而在图三-我的订单 下单中这个页面扫一扫不起效,当时就郁闷了为啥其他页面有用,这里却没用,开始调试吧. 报错信息是签名验证不成功. 自己去打 ...

  3. 利用spring AOP实现每个请求的日志输出

    前提条件: 除了spring相关jar包外,还需要引入aspectj包. <dependency> <groupId>org.aspectj</groupId> & ...

  4. 云计算 --> 技术原理

    云计算技术原理 云计算分为IaaS.PaaS和SaaS三种类型,不同的厂家又提供了不同的解决方案,目前还没有一个统一的技术体系结构,下图是一个供商榷的云计算体系结构如下,它概括了不同解决方案的主要特征 ...

  5. nodejs利用superagent爬取数据的简单例子

    爬取世界银行统计数据 安装:npm install superagent /** * Created by zh on 16-9-7. */ var request = require('supera ...

  6. python+pycahrm+windows环境准备

    python安装教程和Pycharm安装详细教程 首先我们来安装python 1.首先进入网站下载:点击打开链接(或自己输入网址https://www.python.org/downloads/),进 ...

  7. 测试对bug如何分析和定位

    如何去区分一个功能测试工程师的水平高和低? 可以从很多个方面去检查,比如测试的思路, 比如测试用例的覆盖度?,比如测试出bug是否能够定位到根因? 上面说的各个方面都很合理,那我们平常如何如更深的定位 ...

  8. Java基础学习笔记十四 常用API之基本类型包装类

    基本类型包装类 Java中有8种基本的数据类型,可是这些数据是基本数据,想对其进行复杂操作,变的很难.怎么办呢?在实际程序使用中,程序界面上用户输入的数据都是以字符串类型进行存储的.而程序开发中,我们 ...

  9. C语言博客作业--数据类型

    一.PTA实验作业 题目1:7-8 判断合法标识符 1. 本题PTA提交列表 2. 设计思路 1.定义整数型变量repeat和i来存放判断字符串是否为合法标识符的次数,定义字符型ch来存放读取的字符 ...

  10. 项目Alpha冲刺Day3

    一.会议照片 二.项目进展 1.今日安排 服务器后台基本搭建完成,完成帐号权限一小部分完成并进行框架使用练手. 2.问题困难 跨专业成员不熟java的开发,有一名成员之前主要做安卓的,所以有比较多的东 ...