当前位置: 首页 > news >正文

Qt Creator配置以及使用Valgrind - 检测内存泄露

Qt Creator配置以及使用Valgrind - 检测内存泄露

  • 引言
  • 一、下载安装
    • 1.1 下载源码
    • 1.2 安装
  • 二、配置使用
    • 2.1 Qt Creator配置
    • 2.2 使用
    • 2.3 更多详细信息可参考官方文档:
  • 三、参考链接

引言

Valgrind是一个在Linux平台下广泛使用的开源动态分析工具,它提供了一套丰富的工具集合,旨在帮助开发者检测和解决内存管理错误、线程同步问题以及优化程序性能。

对于Qter来说,可以直接在Qt Creator配置Valgrind,输出的相关信息会逻辑清晰的显示在界面上。

一、下载安装

可以直接使用包管理工具下载安装sudo apt-get install valgrind,或者通过源码进行编译安装。 本文使用源码安装

1.1 下载源码

官方下载地址:https://valgrind.org/downloads/,如下图所示:点击红框处即可下载。

在这里插入图片描述

1.2 安装

    1. 安装步骤如下:
      解压下载的压缩包、进入解压的文件、配置生成Makefile、make编译源码、make install安装 (需要root权限),命令如下
tar xvf valgrind-3.23.0.tar.bz2
cd valgrind-3.23.0
./configure
make
sudo make install
    1. 验证
      终端中输入valgrind -h 命令,显示如下图所示:
      在这里插入图片描述

二、配置使用

2.1 Qt Creator配置

    1. 选择菜单栏中的 Tools > Options
      在这里插入图片描述
    1. 选择Analyzer > Valgrind,会自动获取valgrind的可执行路径,可配置额外的参数
      注意:不同Qt Creator版本,可配置的项也不同. 一般来说,高版本可配置的项多,较全面
      在这里插入图片描述

2.2 使用

    1. 选择一个项目作为active project(只打开一个项目可忽略),工具栏选择 Analyze > Valgrind Memory Analyzer即可对此项目进行检测
      在这里插入图片描述
    1. 启动稍慢,需要等待 ,在应用程序输出 (Application Output)窗口会显示valgrind相关命令,如下图所示:
      在这里插入图片描述
    1. 在程序自动 or 手动退出后才会结束分析,输出相关信息
      在这里插入图片描述
int *b = new int[10];  // new了40个字节的内存,但是程序最后没有释放.

2.3 更多详细信息可参考官方文档:

    1. 打开Qt Creator的帮助
      在这里插入图片描述
    1. 下方有Detection Memory Leaks with Memcheck,里面有详细的使用和配置说明
      在这里插入图片描述

三、参考链接

【C/C++ 实用工具】内存泄漏与堆溢出检测工具一览:https://blog.csdn.net/qq_21438461/article/details/133215065
内存泄漏检测工具valgrind神器:https://blog.csdn.net/weixin_45264425/article/details/133824586
Qt creator 搭配 valgrind 检测内存泄漏:https://www.cnblogs.com/coding-my-life/p/4004161.html
valgrind的使用与输出结果分析 :https://www.cnblogs.com/kuangsyx/p/8043526.html
盘一盘几个内存泄漏检测工具:https://zhuanlan.zhihu.com/p/608640068
Valgrind Documentation:https://valgrind.org/docs/manual/index.html

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vscode 打开远程bug vscode Failed to parse remote port from server output
  • react 快速入门思维导图
  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 二进制游戏(200分)- 三语言AC题解(Python/Java/Cpp)
  • SqlServer: LAG等开窗函数应用
  • 网络编程-TCP/IP
  • H3CNE(计算机网络的概述)
  • K12智慧校园智能化解决方案
  • 数据库第二次作业
  • 下载最新版Anaconda、安装、更换源、配置虚拟环境并在vscode中使用
  • MATLAB图像处理分析基础(一)
  • Nuxt 使用指南:掌握 useNuxtApp 和运行时上下文
  • SpringMVC源码深度解析(中)
  • 计算机视觉篇5 图像的位置--边框
  • 面经学习(厦门安全狗实习)
  • level 6 day2-3 网络基础2---TCP编程
  • 78. Subsets
  • Apache Zeppelin在Apache Trafodion上的可视化
  • codis proxy处理流程
  • Electron入门介绍
  • go语言学习初探(一)
  • HTTP请求重发
  • HTTP--网络协议分层,http历史(二)
  • JS笔记四:作用域、变量(函数)提升
  • nginx 配置多 域名 + 多 https
  • PHP 7 修改了什么呢 -- 2
  • python docx文档转html页面
  • React组件设计模式(一)
  • Redux 中间件分析
  • SQLServer之创建显式事务
  • WordPress 获取当前文章下的所有附件/获取指定ID文章的附件(图片、文件、视频)...
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 工程优化暨babel升级小记
  • 开发基于以太坊智能合约的DApp
  • 码农张的Bug人生 - 见面之礼
  • 前端代码风格自动化系列(二)之Commitlint
  • 深入浏览器事件循环的本质
  • 项目实战-Api的解决方案
  • 哈罗单车融资几十亿元,蚂蚁金服与春华资本加持 ...
  • 如何用纯 CSS 创作一个货车 loader
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • (14)Hive调优——合并小文件
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (JS基础)String 类型
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (二)fiber的基本认识
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (九)c52学习之旅-定时器
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (原创)可支持最大高度的NestedScrollView
  • *setTimeout实现text输入在用户停顿时才调用事件!*