valgrind massif 分析内存问题

2023-11-09

旧博文,搬到 csdn
原文:http://rebootcat.com/2020/06/16/valgrind_massif_memory_analysing/

Valgrind Massif

valgrind 是什么,这里直接引用其他人的博客:

Valgrind是一套Linux下,开放源代码(GPL
V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。

内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。

Valgrind的体系结构如下图所示:

Massif 命令行选项

关于 massif 命令行选项,可以直接查看 valgrind 的 help 信息:


MASSIF OPTIONS
       --heap=<yes|no> [default: yes]
           Specifies whether heap profiling should be done.

       --heap-admin=<size> [default: 8]
           If heap profiling is enabled, gives the number of administrative bytes per block to use. This should be an estimate of the average, since it may vary. For example, the
           allocator used by glibc on Linux requires somewhere between 4 to 15 bytes per block, depending on various factors. That allocator also requires admin space for freed blocks,
           but Massif cannot account for this.

       --stacks=<yes|no> [default: no]
           Specifies whether stack profiling should be done. This option slows Massif down greatly, and so is off by default. Note that Massif assumes that the main stack has size zero
           at start-up. This is not true, but doing otherwise accurately is difficult. Furthermore, starting at zero better indicates the size of the part of the main stack that a user
           program actually has control over.

       --pages-as-heap=<yes|no> [default: no]
           Tells Massif to profile memory at the page level rather than at the malloc'd block level. See above for details.

       --depth=<number> [default: 30]
           Maximum depth of the allocation trees recorded for detailed snapshots. Increasing it will make Massif run somewhat more slowly, use more memory, and produce bigger output
           files.

       --alloc-fn=<name>
           Functions specified with this option will be treated as though they were a heap allocation function such as malloc. This is useful for functions that are wrappers to malloc or
           new, which can fill up the allocation trees with uninteresting information. This option can be specified multiple times on the command line, to name multiple functions.

           Note that the named function will only be treated this way if it is the top entry in a stack trace, or just below another function treated this way. For example, if you have a
           function malloc1 that wraps malloc, and malloc2 that wraps malloc1, just specifying --alloc-fn=malloc2 will have no effect. You need to specify --alloc-fn=malloc1 as well.
           This is a little inconvenient, but the reason is that checking for allocation functions is slow, and it saves a lot of time if Massif can stop looking through the stack 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

valgrind massif 分析内存问题 的相关文章

随机推荐

  • Java实现短信验证码功能(利用容联云,个人测试,不需要项目上线)

    前提 开发环境 jdk1 8 idea2020 准备工作 1 登录容联云官网https www yuntongxun com 2 按照提示注册一个容联云账号 3 注册完成点击控制台如下页面 需要记住 ACCOUNT SID AUTH TOK
  • android boot.img 拆包,修改adb 具有root权限,以i9250为例

    Android 系统的rom最主要的就是3个文件 boot img system img userdata img 其中boot img 存放着内核以及Android系统的配置信息 比如android系统各文件夹的读写权限 adb 的权限
  • 个人学习笔记(二)

    在安装 ahocorasick库是碰到了许多问题 首先是安装好anaconda 配置好Python环境后输入conda install pyahocorasick报错 如图 然后尝试用pip install pyahocorasick 也出
  • java httpclient的digest验证(可恨,找遍全网没有靠谱的,不是少包就是少文件。含泪整理o(╥﹏╥)o~~~~)

    背景 调用第三方接口 使用的是digest auth鉴权方式 basic auth和digest auth比较 basic认证是把用户和密码通过base64加密后发送给服务器进行验证 Basic认证过程简单 每次请求都有发送密码 安全性较低
  • 变量那些事

    什么是变量 变数或变量 是指没有固定的值 可以改变的数 变量以非数字的符号来表达 一般用拉丁字母 变量是常数的相反 变量的用处在于能一般化描述指令的方式 结果只能使用真实的值 指令只能应用于某些情况下 变量能够作为某特定种类的值中任何一个的
  • 开心档-软件开发入门之MongoDB 创建集合

    作者简介 每天分享的MongoDB 创建集合学习经验 和学习笔记 座右铭 有自制力 做事有始有终 学习能力强 愿意不断地接触学习新知识 个人主页 iOS开发上架的主页 前言 本章将会讲解MongoDB 创建集合 目录 MongoDB 创建集
  • 电子设计竞赛(4)-常用的两种PID算法

    公众号关注 大鱼机器人 设为 星标 重磅干货 第一时间送达 1 什么是PID PID 控制器以各种形式使用超过了 1 世纪 广泛应用在机械设备 气动设备 和电子设备 在工业应用中PID及其衍生算法是应用最广泛的算法之一 是当之无愧的万能算法
  • 爬虫工作中代理失效了怎么处理?

    Hey 亲爱的爬虫小伙伴们 是不是经常在爬虫的工作中遇到代理IP失效的问题 别着急 今天我来分享一些应对代理失效的妙招 这些方法简单易行 让你爬虫顺利进行 一 为什么代理会失效 在爬虫过程中 使用代理IP是常见的手段 它可以帮助我们隐藏真实
  • Could not find a declaration file for module 'vue-xxx'.

    我尝试添加到项目中的任何第三方Vue js库都会引发以下错误 Could not find a declaration file for module vue xxx Could not find a declaration file fo
  • MySQL 中的共享锁、排他锁与意向锁

    共享锁 Share Lock 共享锁又称读锁 简称 S 锁 一个事务获取了一个数据行的共享锁 其他事务能获得该行对应的共享锁 但不能获得排他锁 即一个事务在读取一个数据行的时候 其他事务可以并发读取数据 但不能对该数据行进行增删改 直到已释
  • 【Mybatis】Mybatis的介绍以及使用

    Mybatis的介绍以及使用 https www cnblogs com kenhome p 7764398 html resultMap的用法以及关联结果集映射 https blog csdn net qq 42780864 articl
  • N1盒子刷机经验分享

    小白入坑N1经验分享 n1的玩法很多 价格也很实惠 所以前几天也入手了一个 但是对这个小盒子是一无所知 完全摸不着方向 整天在恩山逛 恩山大佬很多 干货也很多 因此我折腾了几天 反复看了几个精品帖 算是有了点体会 但是 大佬们分享的帖子虽然
  • catalina 无法验证macos_macOS 10.15 Catalina无法打开app,提示“因为无法确认开发者身份”问题的解决方法......

    概述 本文最后更新 2020年5月4日 不少用户升级到macOS Catalina 10 15之后 遇到了网上下载的app无法运行的问题 出现以下几种提示 无法打开 xxx 因为无法确认开发者的身份 xxx 已损坏 无法打开 您应该将它移到
  • Java比较器

    一 Java比较器的概述 1 为什么要使用比较器 当java涉及到数组排序时 就会使用到比较器 import java util Arrays public class ComparableTest1 public static void
  • Java常见问题(1)navicat连接mysql报2059错误

    一 navicat连接mysql8后出现2059报错原因 使用navicat连接mysql数据库的时候 弹出2059错误 如下图所示 出现的原因是mysql8安装选择了强加密规则caching sha2 password 而mysql8之前
  • 买了一年CSDN年VIP,用着实在太爽!

    买一年CSDN的年VIP有多爽及使用攻略 一 前言 这段时间 一旦打开CSDN就不断的弹出618活动 在电脑网上打开 一股白嫖之的气息吹来 让人直接忍不住剁手 最后经过近5天的挣扎 我还是受不了CSDN的蛊惑 618不买衣服不买裤子 不买键
  • 链接器工具错误 LNK2005———— 符号 被定义了多次。

    出错函数为void BinaryTree test 如下 1 该函数在BInarySearchTree h中声明如下 void BinaryTree test 2 该函数在BInarySearchTree cpp中定义 如下 void Bi
  • 2021美赛A题

    2021百万 问题A 真菌 碳循环描述了整个地球化学过程中碳的交换过程 是地球生命的重要组成部分 碳循环的一部分包括 化合物的分解 使碳得以更新并以其他形式使用 一键 这一过程的组成部分是植物材料和木质纤维的分解 分解木质纤维的一些关键因素
  • 学习笔记(Putty使用指南)

    下载 Putty是用来远程连接服务器的 支持SSH Telnet Serial等协议的连接 其中最常用的是SSH 下载链接 链接 https pan baidu com s 1RpJCgizhzxBvc7VVdYxDFg 提取码 4v23
  • valgrind massif 分析内存问题

    旧博文 搬到 csdn 原文 http rebootcat com 2020 06 16 valgrind massif memory analysing Valgrind Massif valgrind 是什么 这里直接引用其他人的博客