码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • ubuntu 下C++程序利用Valgrind工具调试内存问题


    Valgrind工具调试内存问题

    • 1. 简介
    • 2.安装
    • 3.调用

    1. 简介

    Valgrind 是一个用于构建动态分析工具的仪器框架。它有一组工具,每个工具都可以执行某种调试、分析或类似任务。Valgrind 是模块化架构,因此可以轻松创建新工具,而不会干扰现有结构。常用的工具如下:

    1. Memcheck是一个内存错误检测器,该工具使用最广泛,它可以检测 C 和 C++ 程序中常见的许多与内存相关的错误。
    2. Cachegrind是一个缓存和分支预测分析器。它可以使程序运行得更快。
    3. Callgrind是一个调用图生成缓存分析器。它与 Cachegrind 有一些重叠,但也收集了一些 Cachegrind 没有的信息。
    4. Helgrind是一个线程错误检测器。它可以调试多线程程序。
    5. DRD也是一个线程错误检测器。它与 Helgrind 类似,但使用不同的分析技术,因此可能会发现不同的问题。
    6. Massif是一个堆分析器。它可以使程序使用更少的内存。
    7. DHAT是一种不同类型的堆分析器。它有助于了解块生命周期、块利用率和布局效率低下的问题。
      使用Valgrind调试程序时,程序将比正常运行慢得多(例如 20 到 30 倍),并使用更多内存。

    2.安装

    在官网https://valgrind.org/downloads/上下载软件,目前最新版本是Valgrind 3.19.0。然后安装下面的命令安装

    tar -jxvf  valgrind-3.19.0.tar.bz2
    cd algrind-3.19.0 //进入文件夹 
    ./configure --prefix=/usr/local/valgrind //根据自己的需要设置安装目录,这里以/usr/local/valgrind为例
    make
    make install
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.调用

    1. 设置
      在makefile中增加调试模式的配置,由于在debug状态下推理出的问题多于release状态下,因此最好切换到debug进行valgrind检测。
    CFLAGS += -fPIC  -g
    
    • 1
    1. 对于编译好的可执行文件,增加配置选项,如valgrind --leak-check=full --show-reachable=yes --track-origins=yes --show-mismatched-frees=no -s ./可执行文件 参数1 参数2
    valgrind --leak-check=full --show-reachable=yes --track-origins=yes  --show-mismatched-frees=no -s ./run ./testimage
    
    • 1
  • 相关阅读:
    机器视觉行业最可怕的不是以量换价吗?而是买方市场的带量采购,量价挂钩
    Python3操作文件系列(一):判断文件|目录是否存在三种方式
    EPSG竟然是个“石油组织”?
    物联网实战--入门篇之(七)嵌入式-MQTT
    万字长文解析最常见的数据库恢复算法: ARIES
    网站服务器域名怎么配置的
    刘馨蔓:“她是行走的发光体”|OneFlow U
    【Linux守护进程】一、进程组与会话
    微信小程序数据存储方式有哪些
    计算古坐标——基于GPlates Web Service的坐标点重建
  • 原文地址:https://blog.csdn.net/lansebingxuan/article/details/127362418
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号