初试valgrind内存调试工具
虽然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内存调试工具的更多相关文章
- valgrind 内存调试工具
一.valgrind 是运行在linux系统下的内存调试工具,支持很多对象:memcheck.addrcheck.cachegrind.Massif.helgrind.Callgrind等.使用val ...
- Valgrind,内存调试工具
Valgrind是一款用于内存调试.内存泄漏检测以及性能分析的软件开发工具 官网:http://valgrind.org/ 用户开发手册地址:http://valgrind.org/docs/manu ...
- valgrind 内存检测与调用图生成
http://blog.csdn.net/destina/article/details/6198443 感谢作者的分享! 一 valgrind是什么? Valgrind是一套Linux下,开放源 ...
- c++Valgrind内存检测工具---19
原创博文,转载请标明出处--周学伟 http://www.cnblogs.com/zxouxuewei/ 一.Valgrind 概述 Valgrind是一套Linux下,开放源代码(GPL V2)的 ...
- Valgrind 内存泄漏工具
Valgrind 是一款 Linux下(支持 x86.x86_64和ppc32)程序的内存调试工具,它可以对编译后的二进制程序进行内存使用监测(C语言中的malloc和free,以及C++中的new和 ...
- 内存调试工具Electric Fence
源码下载地址 注:官方地址下载不了,可能不再维护了,此是一个老项目 efence中相关环境变量控制: 302 /* 303 * See if the user wants to allow mallo ...
- Qt Creator Valgrind内存分析前端(分析Nginx内存)
Linux上使用Qt Creator进行C/C++开发http://my.oschina.net/eechen/blog/166969Qt Creator GDB调试前端(调试Nginx):http: ...
- JVM常用启动参数+常用内存调试工具
一.JVM常用启动参数 -Xms:设置堆的最小值. -Xmx:设置堆的最大值. -Xmn:设置新生代的大小. -Xss:设置每个线程的栈大小. -XX:NewSize:设置新生代的初始值. -XX:M ...
- linux下内存调试工具——valgrind
1.valgrind之memcheck 最常用的工具,用来检测程序中出现的内存问题,所有对内存的读写都会被检测到,一切对malloc()/free()/new/delete的调用都会被捕获.所以,它 ...
随机推荐
- 手机端原生js实现下拉刷新数据
HTML结构如下: <div class="outerScroller comment"> <div class='scroll comment'> < ...
- 插入排序(Java实现)
直接插入排序 public class InsertionSort { public static <T extends Comparable<? super T>> void ...
- 第六届蓝桥杯B组java最后一题
10.压缩变换(程序设计) 小明最近在研究压缩算法. 他知道,压缩的时候如果能够使得数值很小,就能通过熵编码得到较高的压缩比. 然而,要使数值很小是一个挑战. 最近,小明需要压缩一些正整数的序列,这些 ...
- http.request请求及在node中post请求参数解析
Post请求 var http=require('http'); var qs=require('querystring'); var post_data={a:123,time:new Date() ...
- 工厂模式的进阶复习(Factory)
工厂模式进阶复习 看了多遍的工厂模式,老是忘记不同模式有什么区别,本文重点说明一下工厂模式的三种方式(简单工厂模式,工厂方法模式,抽象工厂模式)的区别 1.简单工厂模式 简单工厂模式通过Factory ...
- Konckout开发实例:简单的表单提交页面
<!doctype html> <html > <head> <meta http-equiv="Content-Type" conten ...
- oracle 常用select sql语句
本人认为很实用的几条语句 1)select ... from ...into... 2)insert into ...select ... 3)select ...from ...left join ...
- python web——Django架构
环境:windows/linux/OS 需要的软件:Firefox 浏览器(别的也可以 不过firfox和python的webdriver兼容性好) git版本控制系统(使用前要配置 用户 编辑器可以 ...
- 记录python接口自动化测试--利用unittest生成测试报告(第四目)
前面介绍了是用unittest管理测试用例,这次看看如何生成html格式的测试报告 生成html格式的测试报告需要用到 HTMLTestRunner,在网上下载了一个HTMLTestRunner.py ...
- 201621123040《Java程序设计》第八周学习总结
1.本周学习总结 2.书面作业 2.1ArrayList代码分析 2.1.1解释ArrayList的contains源代码 ArrayList.contain()方法通过调用indexOf()来判断元 ...