1、valgrind之memcheck 
  最常用的工具,用来检测程序中出现的内存问题,所有对内存的读写都会被检测到,一切对malloc()/free()/new/delete的调用都会被捕获。所以,它能检测以下问题: 
    1、对未初始化内存的使用; 
    2、读/写释放后的内存块; 
    3、读/写超出malloc分配的内存块; 
    4、读/写不适当的栈中内存块; 
    5、内存泄漏,指向一块内存的指针永远丢失; 
    6、不正确的malloc/free或new/delete匹配; 
    7、memcpy()相关函数中的dst和src指针重叠。 
  这些问题往往是C/C++程序员最头疼的问题,Memcheck在这里帮上了大忙。 
2、valgrind之callgrind 
  和gprof类似的分析工具,但它对程序的运行观察更是入微,能给我们提供更多的信息。和gprof不同,它不需要在编译源代码时附加特殊选项,但加上调试选项是推荐的。Callgrind收集程序运行时的一些数据,建立函数调用关系图,还可以有选择地进行cache模拟。在运行结束时,它会把分析数据写入一个文件。callgrind_annotate可以把这个文件的内容转化成可读的形式。 
3、valgrind之Cachegrind 
  Cache分析器,它模拟CPU中的一级缓存I1,Dl和二级缓存,能够精确地指出程序中cache的丢失和命中。如果需要,它还能够为我们提供cache丢失次数,内存引用次数,以及每行代码,每个函数,每个模块,整个程序产生的指令数。这对优化程序有很大的帮助。 
4、valgrind之Helgrind 
  它主要用来检查多线程程序中出现的竞争问题。Helgrind寻找内存中被多个线程访问,而又没有一贯加锁的区域,这些区域往往是线程之间失去同步的地方,而且会导致难以发掘的错误。Helgrind实现了名为“Eraser”的竞争检测算法,并做了进一步改进,减少了报告错误的次数。不过,Helgrind仍然处于实验阶段。 
5、valgrind之Massif 
  堆栈分析器,它能测量程序在堆栈中使用了多少内存,告诉我们堆块,堆管理块和栈的大小。Massif能帮助我们减少内存的使用,在带有虚拟内存的现代系统中,它还能够加速我们程序的运行,减少程序停留在交换区中的几率。 
此外,lackey和nulgrind也会提供。Lackey是小型工具,很少用到;Nulgrind只是为开发者展示如何创建一个工具。

转载于:https://www.cnblogs.com/chris-cp/p/4617832.html

linux下内存调试工具——valgrind相关推荐

  1. Linux下内存问题检测神器 valgrind

    Linux下内存问题检测神器:Valgrind - Madcola - 博客园 (cnblogs.com)

  2. eclipse内存设置Linux,Eclipse CDT Linux下内存分析 补记

    常用工具汇总 常用的内存分析工具 PurifyPlus 不支持常用的Linux 64系统[Ubuntu redhat],悲剧 Valgrind简介 Memcheck Memcheck 工具主要检查下面 ...

  3. Linux下内存泄漏定位方法

    Linux下内存泄漏可分为用户空间的内存泄漏和内核空间的内存泄漏. 用户空间内存泄漏的查找方法: 第一步,查找内存泄漏的应用程序. 首先,写一个简单的内存泄漏程序(每秒钟泄漏4MB)umemleak. ...

  4. linux查看设备内存代码,Linux下内存查看命令(示例代码)

    在Linux下面,我们常用top命令来查看系统进程,top也能显示系统内存.我们常用的Linux下查看内容的专用工具是free命令. Linux下内存查看命令free详解: 在Linux下查看内存我们 ...

  5. Linux下内存使用率、CPU使用率、以及运行原理-转

    Linux下内存使用率.CPU使用率.以及运行原理 Linux下怎样查看机器配置啊?cpu/内存/硬盘 dmesg 显示开机信息.kernel会将开机信息存储在ring buffer中.您若是开机时来 ...

  6. Linux下内存检测工具:asan

    Linux下内存检测工具:asan ASAN(Address-Sanitizier)早先是LLVM中的特性,后被加入GCC 4.8,在GCC 4.9后加入对ARM平台的支持.因此GCC 4.8以上版本 ...

  7. linux下内存性能测试工具STREAM

    Linux下内存性能测试 简介 下载并解压 编译 运行 运行结果 结果分析 简介 Stream测试是内存测试中业界公认的内存带宽性能测试基准工具,stream由Virginia University提 ...

  8. Linux下内存泄露工具

    概述 内存泄露(memory leak)指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,在大型的.复杂的应用程序中,这时就出现了内存泄露.尽管优秀的编程实践可以确保最少的泄露,但是根据经验, ...

  9. Linux下gdb调试工具的使用

    gdb是GNU开源组织发布的一个强大的Linux下的程序调试工具. gdb主要完成四个方面的功能:(1).启动你的程序,可以按照你的自定义的要求随心所欲的运行程序:(2).可让被调试的程序在你所指定的 ...

  10. linux按进程分配物理内存,linux下内存管理学习心得(一)

    最近在学习内存管理的时候,发现对linux下的所谓内存如何管理如何分配都不熟悉,通过最近的查阅资料可总结如下,如有不妥之处欢迎大家批评与指正. 总的的来说linux的内存管理其实主要难理解的是以下几个 ...

最新文章

  1. PHP Log时时查看小工具
  2. php jquery实现弹窗,jquery 弹出层实现代码_jquery
  3. linux之 !!命令
  4. c# contains_清单 .Contains()方法,以C#为例
  5. Linux中Samba详细安装
  6. 数控车椭圆编程实例带图_数控车床编程教程,图文实例详解
  7. java集合按大小排序_List集合对象中按照不同属性大小排序的实例
  8. java网上商城外文翻译_英语文献翻译网上商城java.doc
  9. 2年3个月推倒重来的决心 独立游戏《须弥•域》的涅槃之路
  10. Linux内核多线程实现方法 —— kthread_create函数【转】
  11. 秒杀系统架构分析与实战(14155字,26图)
  12. 单片机控制的双路有源滤波器设计
  13. 小程序页面简单功能模块化之取整
  14. 关于CS模式和P2P模式分发文件速度的思考
  15. MIMICIV数据库下载导入
  16. 学计算机装机,新手学装机:小白如何从零开始学装机
  17. 安卓动画壁纸实战:制作一个星空动态壁纸(带随机流星动画)
  18. linux 内核2.6.35.3,linux-2.6.35.3内核移植(s3c2440)
  19. ConvNeXt+YOLOv7改进方案
  20. TPS62240DDCR同步降压DC-DC转换器

热门文章

  1. android studio for android learning (二十五 )activity的启动模式详解与标志位简析
  2. Python集合set与frozenset的区别
  3. latex在行末出现百分号的作用
  4. 2020牛客多校训练2 I Interval(对偶图最短路求最小割)
  5. 940mx黑苹果驱动_黑苹果intel网卡驱动方法
  6. [你必须知道的异步编程]——基于任务的异步模式
  7. Linux服务器部署javaweb项目,从环境配置,到最终系统运行
  8. sqlalchemy query函数可用参数有哪些?
  9. js面向对象数据属性和访问器属性,定义多个属性及读取属性的特性
  10. sql查询数据库所有表(select * from sysobjects )