虽然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. linux下安装软件

    业界的软件标准安装有三步:configure,make,make install,下面是它们的定义: ./configure是用来检测你的安装平台的目标特征的.比如它会检测你是不是有CC或GCC,并不 ...

  2. Linux find用法

    Linux中find常见用法示例 ----摘抄哪里忘记了 ·find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} ...

  3. java File类常用方法

    file类常用方法 delete()删除此抽象路径名表示的文件和目录. equals()测试此抽象路径名与给定对象是否相等. exists()测试此抽象路径名表示的文件或目录是否存在. getName ...

  4. nginx静态服务器配置

    1. nginx安装 在 Ubuntu 下,可以舍去编译安装的过程,直接 apt-get sudo apt-get install nginx sudo service nginx start 2. ...

  5. 【Python】 迭代器&生成器

    迭代器 任何一个类,只要其实现了__iter__方法,就算是一个可迭代对象.可迭代对象的__iter__方法返回的对象是迭代器,迭代器类需要实现next方法.一般来说,实现了__iter__方法的类肯 ...

  6. java必学的5种排序算法

    第一种冒泡排序 第二种 选择排序 第三种.插入排序

  7. 转)sqlite 数据类型

    一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断.SQLite具有以下五种数据类型: 1.NULL:空值. 2.INTEGER:带符号的整型,具体取决有存入数 ...

  8. NetFPGA Demo ——reference_router_nf1_cml

    NetFPGA Demo --reference_router_nf1_cml 前言 本博文主要介绍了reference_router_nf1_cml该demo的一路运行,以及一路上艰难跑通遇到的坑. ...

  9. tornado web高级开发项目

    抽屉官网:http://dig.chouti.com/ 一.配置(settings) settings = { 'template_path': 'views', #模板文件路径 'static_pa ...

  10. SWFUpload文件上传详解

    SWFUpload是一个flash和js相结合而成的文件上传插件,其功能非常强大. SWFUpload的特点: 1.用flash进行上传,页面无刷新,且可自定义Flash按钮的样式; 2.可以在浏览器 ...