valgrind Massif

2023-11-11

valgrind检查内存泄露

#valgrind   ./程序

内存泄漏问题,我们有memcheck工具来检查。很爽。但是有时候memcheck工具查了没泄漏,程序一跑,内存还是狂飙。这又是什么问题。。。

其实memcheck检查的内存泄漏只是狭义的内存泄漏,或者说是严格的内存泄漏,也就是说,在程序运行的生命周期内,这部分内存你是彻底释放不了了,即,你失去了这些地址。

其实还有第二种类型的内存泄漏,就是,长期闲置的内存堆积。这部分内存虽然你还保存了地址,想要释放的时候还是能释放。关键就是你忘了释放。。。杯具啊。这种问题memcheck就不给力了。这就引出了第二个内存工具valgrind –tool=massif。

会产生massif.out.****的文件,然后使用

# ms_print massif.out.*** >massif.log


massif 可以的帮我们发现很多问题,比如现实中总是遇到一些内存一直上涨,可以就是没有memory leaker的情况, 其实这样的情况并不奇怪,非常容易发生,比如每次循环的时候你并没有把上次的内存释放,同时不断在后面添加更多的内容,这显然不会有memory leaker,倒是到了一定的程度,自然会发生bad alloc的问题。对于这样的问题massif就可以大显身手,比较一下两个内存的切片,增加的部分自然就发现了。


官方主页教程:http://valgrind.org/docs/manual/ms-manual.html

先看一个图是分析firefox内存使用的:


安装massif-visualizer

massif-visualizer是ubuntu下的图形化分析工具

http://get.ubuntusoft.com/app/massif-visualizer

项目主页:

https://projects.kde.org/projects/extragear/sdk/massif-visualizer

massif-visualizer下载:

http://tel.mirrors.163.com/ubuntu/pool/universe/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

valgrind Massif 的相关文章

  • gdb调试core文件快速定位core dump位置

    core dump又叫核心转储 当程序运行过程中发生异常 程序异常退出时 由操作系统把程序当前的内存状况存储在一个core文件中 叫core dump linux中如果内存越界会收到SIGSEGV信号 然后就会core dump 在程序运行
  • 使用.debug_info调试信息查看结构体、位域变量内存分配

    上一篇使用readelf查看了 debug info调试信息 现在我们对它进行分析 首先将调试信息保存到文档中 readelf wi test gt out txt 结构体分析 首先 我在结构体里定义了一个char型和一个double型 编
  • 绕过__chkesp堆栈检查

    前面很多注入相关的文章中都提到为了保证注入后原始程序能恢复正常的执行流 需要在编译器中关闭堆栈检查 为了解决问题 这是个好手段 但是不得不说这是回避问题 不是根本上解决问题 本文旨在解决这个问题 vs用 chkesp来实现堆栈检查 chke
  • 【VS2010学习笔记】【异常处理】一(无法启动此程序,因为计算机中丢失libiconv-2.dll)

    问题1 无法启动此程序 因为计算机中丢失libiconv 2 dll 问题描述 在VS2010 Opencv2 4 7的程序调试的过程中 再点击 运行 后 系统提示 无法启动此程序 因为计算机中丢失libiconv 2 dll 自己在调试的
  • Unity内存与资源管理

    内存管理是程序开发的核心问题 而资源的使用又与内存息息相关 因此本章想要梳理整个开发流程中Unity对于内存与资源的管理方式 一 内存基础 1 1 基础概念 内存是暂时存放CPU中的运算数据 与硬盘等外部存储器交换的数据 在操作系统中 内存
  • Ubuntu16.04 安装 ipython详细步骤

    ipython是一个不错的交互工具 调试Python代码很方便 安装ipython sudo apt get install ipython3 sudo pip install ipython 安装Qt console 工具 sudo pi
  • facebook stetho Android调试工具

    什么是Stetho 官网简介 Stetho is a debug bridge for Android applications enabling the powerful Chrome Developer Tools and much m
  • JVM的内存区域

    JVM的内存区域 不知不觉都大三了 回头看看以前的Android开发过程 遇到的很多问题都需要深入到源码去解决 这也促使我不断地深入学习Java的相关知识 首先要学习的肯定是JVM 不过JVM的知识体系十分庞杂 JVM的内存区域的划分是学习
  • Visual Stdio调试IDAPython脚本

    1 安装VS插件PTVS 这一步与第2步中安装版本应该一致 否则最后调试时会连不上 https github com Microsoft PTVS 2 安装python模块PTVSD pip install ptvsd 3 写如下代码ptv
  • 你开发的软件不知道哪里跑飞闪退了?这个办法可以帮忙定位(查看dump)

    QT生成dump pdb文件 使用windbg打开分析查看堆栈 定位程序崩溃位置 你开发的软件不知道哪里跑飞闪退了 这个办法可以帮忙定位 https zhuanlan zhihu com p 102103083
  • 【Visual Studio】调试过程中VS卡死无响应

    最近在使用vs2022 debug调试过程中 经常出现vs2022直接卡死无响应 解决方案 第一种原因 是加载符号导致 调试 选项 符号 1 取消勾选 xxx 符号服务器 2 选择 仅加载指定的模块 第二种情况 VS卡死后 把崩溃dmp导出
  • java中的基本数据类型和引用数据类型以及它们的存储方式堆内存和栈内存

    一直对java中的基本数据类型和引用数据类型之间的关系搞不太清楚 今天做leetcode的一道题目 总算弄清楚了关系 写下来和大家一起分享一下 一 基本数据类型 数据类型在计算机语言里面 是对内存位置的一个抽象表达方式 可以理解为针对内存的
  • 第二章排错的工具:调试器Windbg(下)

    感谢博主 http book 51cto com art 200711 59874 htm 2 2 读懂机器的语言 汇编 CPU执行指令的最小单元 2 2 1 需要用汇编来排错的常见情况 汇编是CPU执行指令的最小单元 下面一些情况下 汇编
  • 反汇编笔记

    1 OD中ctrl f9 运行到返回 就是运行到当前断点所在的函数末尾 retn xxx 处 若xxx 10 那么 10等于10进制的16 就是说这个函数有4个参数 一个参数默认是占4字节 所以就是retn 10 2 调试程序时 在OD内部
  • LCD调试流程

    本来想学的更深入一些再来写这些总结 但想想 边学边写 记录成长过程也挺好的 下面自底向上 了解LCD的整个工作流程 一 LCD的组成结构和各结构的功能 1 背光板模组 提供光的来源 2 上下偏光板 TFT Glass Substrate 液
  • Xcode5.1离线下载安装及使用iOS5模拟器进行开发调试的方法

    Xcode5 1默认不支持iOS5版本的模拟器开发调试 在OS X Mavericks 10 9 x 下默认只能支持iOS6 1及以上版本的模拟器 在OS X Mountain Lion 10 8 x 下默认只能支持iOS6 0及以上版本的
  • 嵌入式Linux——oops:根据oops信息,找到错误的产生位置以及函数的调用关系

    简介 本文主要介绍通过oops信息找到程序中出错位置的方法 并结合自己代码中的错误来讲解如何找到出错位置 同时还会介绍使用栈信息来推到函数间的调用关系 Linux内核 linux 2 6 22 6 所用开发板 JZ2440 V3 S3C24
  • 怎么计算union和struct中字节数计算

    首先我的运行结果都是在64位系统的Xcode中运行的 然后 这个只是由于对于标准的位移量方法看得头疼 自己总结出来的 如果有错误或者不明欢迎留言 字节 一般成8位为一个字节 在Xcode中sizeof int 等于4 在这里也就采用int占
  • Android内存管理

    Android内存泄露 全解析和处理办法 http www jianshu com p bf159a9c391a
  • Web移动端-touch事件

    一 引入 在一个项目demo中 实现单指触控卡片的向任意方向的拖动效果 网上没有现成的插件 所以只好原生js来写 产品要求需要禁止掉多点触控 这个过程很让人头疼 试了很多方法 都不太实现 后来仔细研究 测试了一下移动端的三个常用事件 二 事

随机推荐

  • keepalived双主模式(互为主备)

    考虑到keepalived高可用 备节点的机器基本上属于空闲状态 很浪费硬件资源 所以我们可以让keepalived互为主备 跑多个实例 第一个节点配置 vim etc keepalived keepalived conf global d
  • Qt中Udp通信、Udp广播和组播(QT七)

    目录 一 UDP通信 1 Qt中udp通信QUdpSocket 1 发送端 2 接收端 2 Udp通信广播 1 app端UdpApp 2 控制器端UdpControl 3 Udp通信组播 1 组播发送端 2 组播接收端 3 如果要接收组播数
  • 华为服务器bios中修改磁盘格式,华为服务器设置bios

    华为服务器设置bios 内容精选 换一换 通过在BIOS中设置一些高级选项 可以有效提升虚拟化平台性能 表1列出了TaiShan服务器和性能相关的BIOS推荐配置项 开启CPU预取配置选项的目的在于CPU先行提取下一段指令以提高系统效能 在
  • pthread的互斥量和自旋锁

    一 自旋锁与互斥量的区别 在多处理器环境中 自旋锁最多只能被一个可执行线程持有 如果一个可执行线程试图获得一个被争用 已经被持有的 自旋锁 那么该线程就会一直进行忙等待 自旋 也就是空转 等待锁重新可用 如果锁未被争用 请求锁的执行线程便立
  • Vue3安装配置、开发环境搭建(组件安装卸载)(图文详细)

    Vue3安装配置 开发环境搭建 组件安装卸载 图文详细 本文目录 一 vue的主要安装使用方式 二 node js安装和配置 1 支持运行 Node js的平台 2 Node js 版本开发发布时间表 日期可能会有变化 3 下载安装node
  • qt5.15 快速安装 国内源

    1 qt5 15 安装问题 最大的问题就是需要在线下载与安装 即使挂了科学上网 国外的服务器下载速度也还是超级慢 在网上找了各种解决办法后 终于找到一个快速下载安装的办法 2 安装器下载 阿里源 清华源都没有Windows的安装器了 在腾讯
  • 机器学习实战——第五章(分类):Logistic回归

    前言 首先感谢博主 Jack Cui 主页 http blog csdn net c406495762 Logistic回归博文地址 https blog csdn net c406495762 article details 777233
  • 分布式系统服务器要求,浅谈分布式系统

    分布式系统的由来 软件系统的架构一直以来随着技术的发展和市场的需求进行着不断的演进 最初 各行业业务相对比较简单 对系统的要求也不高 软件系统的架构均采用单一应用架构 此时单台服务器即可满足系统的要求 之后 随着业务的发展 对系统的要求不断
  • Codeblocks的安装与配置

    Hello 大家好 欢迎大家来到编程世界 从现在开始 我将和大家一起走进代码王国 既然我们出来混社会 哦不 是来新世界闯荡 我们至少应该先选一把 神兵利器 来防身嘛 在一些高校的电脑室里 你可能会看见下面这款经典软件 没错 VC 6 0 额
  • Linux redis 主从复制,从服务器一直显示master_link_status:down

    Linux redis 主从复制 从服务器一直显示master link status down 这里初步的解决方案是权限不足 切换成root 就可以解决了
  • vscode无法在只读编辑器中输入

    在设置中搜索run code config 将run in terminal打勾即可
  • 学点Selenium玩点新鲜~新的一年,让分布式测试有更多玩法

    我们都知道 Selenium 是一款在 Web 应用测试领域使用的自动化测试工具 而 Selenium Grid 是 Selenium 中的一大组件 通过它能够实现分布式测试 能够帮助团队简单快速在不同的环境中测试他们的 Web 应用 分布
  • 详细介绍如何在linux中配置chisel环境

    一 安装java和scala 1 安装java 安装java sudo apt install openjdk 11 jre headless 安装javac sudo apt install openjdk 11 jdk headless
  • ubuntu 18.04 RTX2080(ti) --- tensorflow-gpu + cuda9.0 + cudnn-9.0 (ubuntu 16.04, TITAN XP)

    0 下载display driver cuda和cudnn RTX2080 Display Driver cuda cudnn 版本对应关系 1 禁止系统默认的显卡驱动 打开系统黑名单 sudo gedit etc modprobe d b
  • C++11新特性,推荐使用emplace_back()替换push_back()的原因

    TOC c 11新加入了emplace back 用来替换push back 在平时我们习惯性的尾插用push back 去完成 但是如果是尾插临时对象的话 push back 需要先构造临时对象 再将这个对象拷贝到容器的末尾 而empla
  • mmsegmentation安装教程,简单易懂,必能成功

    一 安装anaconda 这个自己弄一路默认就行或者你想改个路径也行 无所谓 安装好之后打开anaconda prompt控制面板 换成清华源 pip config set global index url https pypi tuna
  • 数字IC后端设计技术全局观

    数字IC后端设计flow 不含DFT 数字IC后端设计工具 DC 用于逻辑综合 FM 用于形式验证 ICC 用于物理实现 PrimeTime 用于STA 步骤 或文件类型 简述 RTL Register Transfer Level v文件
  • mysql8.0收费价格,MySQl 8.0遇到的坑

    报错 Illuminate Database QueryException SQLSTATE HY000 1045 Access denied for user root localhost using password NO SQL cr
  • Trying to access array offset on value of type int

    问题描述 出现报错信息 先百度翻译 试图访问int类型值的数组偏移量 通过翻译得知 int型的数据被其他不能使用的类型使用了 个人理解 关于这块 php7 4升级之后会有这个bug 网上大多人是说 7 4 版本的向后不兼容更改 非数组的数组
  • valgrind Massif

    valgrind检查内存泄露 valgrind 程序 内存泄漏问题 我们有memcheck工具来检查 很爽 但是有时候memcheck工具查了没泄漏 程序一跑 内存还是狂飙 这又是什么问题 其实memcheck检查的内存泄漏只是狭义的内存泄