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

C++(Qt)软件调试---内存泄漏分析工具MTuner (25)

C++(Qt)软件调试—内存泄漏分析工具MTuner (25)


文章目录

  • C++(Qt)软件调试---内存泄漏分析工具MTuner (25)
    • @[toc]
    • 1、概述🐜
    • 2、下载MTuner🪲
    • 3、使用MTuner分析qt程序内存泄漏🦧
    • 4、相关地址🐐

更多精彩内容
👉内容导航 👈
👉C++软件调试 👈

1、概述🐜

MTuner 是适用于 Windows、PlayStation 4 和 3、Android 和其他平台的 C/C++ 内存分析器和内存泄漏查找器。

MTuner 利用一种新颖的方法来进行内存分析和分析,保留整个基于时间的内存操作历史记录。通过对整个数据集进行查询,这可以深入了解软件的内存相关行为。

虽然 MTuner 是为分析 C/C++ 应用程序而创建的,但只要有相应的调试符号信息,就可以分析用其他语言编写的程序的内存。用户可以使用 cv2pdb 将 DMD CodeView/DWARF 调试符号转换为 PDB 格式。

MTuner工具使用非常简单,图形化界面方便快速上手;

官方说支持分析MinGW编译的程序,但是我没成功过。

演示环境:

  • 系统:

    • Windows11
  • 开发环境:

    • Qt
  • 编译器:

    • MSVC2017-64
    • MSVC2022-64
  • MTuner版本:V4.8.1

2、下载MTuner🪲

  • MTuner下载
  • 解压后直接使用,无需安装。

3、使用MTuner分析qt程序内存泄漏🦧

  1. 创建一个Qt工程,使用MSVC编译器、Debug模式进行编译,保留pdb符号表;

  2. 在代码中写一些内存泄漏的代码;

    #include "widget.h"
    #include "ui_widget.h"
    #include <QDebug>void fun()
    {for(int i = 0; i < 1024; i++){int*p = new int[1000];qDebug() << p[1];}
    }Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
    {ui->setupUi(this);int a = 123;int b;int*p;qDebug() << a << b <<p;fun();
    }Widget::~Widget()
    {// char* arr = new char[123];delete ui;
    }
    
  3. 编译生成可执行程序;

  4. 使用windeployqt.exe打包程序依赖库,保证程序可以双击运行

    在这里插入图片描述

  5. 打开MTuner,将需要进行分析的可执行程序拖入MTuner中,运行完成后退出拖入的可执行程序,完成内存统计;

    在这里插入图片描述

  6. 常用方法可以通过【call stack Tree】或者【Tree Map】来查看有哪些内存泄漏

    在这里插入图片描述

  7. 【call stack Tree】查看如下所示,略显麻烦;

    1. 点击【Allocations】按分配内存大小降序排序;
    2. 找到内存泄漏最大的依次打开,这里会一层层打开,比较麻烦;
    3. 如果程序有pdb符号表则打开到一定程度后会显示函数名称;
    4. 双击函数名称,在窗口右侧的【Stack trace】栏中可以看见调用堆栈;
    5. 如果堆栈有文件名、函数名等信息,双击对应行就可以在下方定位到内存泄漏位置。

    在这里插入图片描述

  8. 使用【Tree Map】如下所示;

    1. 进入【Tree Map】页面后可以看见内存大小分布情况;
    2. 可以选中较大的内存泄漏块;
    3. 双击内存块后会在窗口右侧的【Stack trace】栏中可以看见调用堆栈;
    4. 如果堆栈有文件名、函数名等信息,双击对应行就可以在下方定位到内存泄漏位置。

    在这里插入图片描述

4、相关地址🐐

  • MTuner github主页
  • MTuner下载
  • 官方文档

相关文章:

C++(Qt)软件调试---内存泄漏分析工具MTuner (25)

C(Qt)软件调试—内存泄漏分析工具MTuner &#xff08;25&#xff09; 文章目录 C(Qt)软件调试---内存泄漏分析工具MTuner &#xff08;25&#xff09;[toc]1、概述&#x1f41c;2、下载MTuner&#x1fab2;3、使用MTuner分析qt程序内存泄漏&#x1f9a7;4、相关地址&#x1f41…...

python核心语法

目录 核⼼语法第⼀节 变量0.变量名规则1.下⾯这些都是不合法的变量名2.关键字3.变量赋值4.变量的销毁 第⼆节 数据类型0.数值1.字符串2.布尔值(boolean, bool)3.空值 None 核⼼语法 第⼀节 变量 变量的定义变量就是可变的量&#xff0c;对于⼀些有可能会经常变化的数据&#…...

MATLAB用CNN-LSTM神经网络的语音情感分类深度学习研究

全文链接&#xff1a;https://tecdat.cn/?p38258 在语音处理领域&#xff0c;对语音情感的分类是一个重要的研究方向。本文将介绍如何通过结合二维卷积神经网络&#xff08;2 - D CNN&#xff09;和长短期记忆网络&#xff08;LSTM&#xff09;构建一个用于语音分类任务的网络…...

智能网页内容截图工具:AI助力内容提取与可视化

我们每天都会接触到大量的网页内容。然而&#xff0c;如何从这些内容中快速提取关键信息&#xff0c;并有效地进行整理和分享&#xff0c;一直是困扰我们的问题。本文将介绍一款我近期完成的基于AI技术的智能网页内容截图工具&#xff0c;它能够自动分析网页内容&#xff0c;截…...

Axure设计之文本编辑器制作教程

文本编辑器是一个功能强大的工具&#xff0c;允许用户在图形界面中创建和编辑文本的格式和布局&#xff0c;如字体样式、大小、颜色、对齐方式等&#xff0c;在Web端实际项目中&#xff0c;文本编辑器的使用非常频繁。以下是在Axure中模拟web端富文本编辑器&#xff0c;来制作文…...

【MyBatis源码】深入分析TypeHandler原理和源码

&#x1f3ae; 作者主页&#xff1a;点击 &#x1f381; 完整专栏和代码&#xff1a;点击 &#x1f3e1; 博客主页&#xff1a;点击 文章目录 原始 JDBC 存在的问题自定义 TypeHandler 实现TypeHandler详解BaseTypeHandler类TypeReference类型参考器43个类型处理器类型注册表&a…...

号卡分销系统,号卡系统,物联网卡系统源码安装教程

号卡分销系统&#xff0c;号卡系统&#xff0c;物联网卡系统&#xff0c;&#xff0c;实现的高性能(PHP协程、PHP微服务)、高灵活性、前后端分离(后台)&#xff0c;PHP 持久化框架&#xff0c;助力管理系统敏捷开发&#xff0c;长期持续更新中。 主要特性 基于Auth验证的权限…...

常用命令之LinuxOracleHivePython

1. 用户改密 passwd app_adm chage -l app_adm passwd -x 90 app_adm -> 执行操作后&#xff0c;app_adm用户的密码时间改为90天有效期--查看该euser用户过期信息使用chage命令 --chage的参数包括 ---m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。 ---M 密码…...

从dos上传shell脚本文件到Linux、麒麟执行报错“/bin/bash^M:解释器错误:没有那个文件或目录”

[rootkylin tmp]#./online_update_wars-1.3.0.sh ba51:./online_update_wars-1.3.0.sh:/bin/bash^M:解释器错误:没有那个文件或目录 使用scp命令上传文件到麒麟系统&#xff0c;执行shell脚本时报错 “/bin/bash^M:解释器错误:没有那个文件或目录” 解决方法&#xff1a; 执行…...

使用 Go 实现将任何网页转化为 PDF

在许多应用场景中&#xff0c;可能需要将网页内容转化为 PDF 格式&#xff0c;比如保存网页内容、生成报告、或者创建网站截图。使用 Go 编程语言&#xff0c;结合一些现有的库&#xff0c;可以非常方便地实现这一功能。本文将带你一步一步地介绍如何使用 Go 语言将任何网页转换…...

文件操作和IO

目录 一. 文件预备知识 1. 硬盘 2. 文件 (1) 概念 (2) 文件路径 (3) 文件类型 二. 文件操作 1. 文件系统操作 [1] File常见的构造方法 [2] File的常用方法 [3] 查看某目录下所有的目录和文件 2. 文件内容操作 (1) 打开文件 (2) 关闭文件 (3) 读文件 (4) 写文件 …...

【C++滑动窗口】1248. 统计「优美子数组」|1623

本文涉及的基础知识点 C算法&#xff1a;滑动窗口及双指针总结 LeetCode1248. 统计「优美子数组」 给你一个整数数组 nums 和一个整数 k。如果某个连续子数组中恰好有 k 个奇数数字&#xff0c;我们就认为这个子数组是「优美子数组」。 请返回这个数组中 「优美子数组」 的数…...

C语言导航 4.1语法基础

第四章 顺序结构程序设计 第一节 语法基础 语句概念 语句详解 程序详解 4.1.1语句概念 说明&#xff1a;构成高级语言源程序的基本单位。 特征&#xff1a;在C语言中语句以分号作为结束标志。 分类&#xff1a; &#xff08;1&#xff09;简单语句&#xff1a;空语句、…...

使用 Python 和 Py2Neo 构建 Neo4j 管理脚本

Neo4j 是一个强大的图数据库&#xff0c;适合处理复杂的关系型数据。借助 Python 的 py2neo 库&#xff0c;我们可以快速实现对 Neo4j 数据库的管理和操作。本文介绍一个功能丰富的 Python 脚本&#xff0c;帮助用户轻松管理 Neo4j 数据库&#xff0c;包含启动/停止服务、清空数…...

Centos 7 安装wget

Centos 7 安装wget 最小化安装Centos 7 的话需要上传wget rpm包之后再路径下安装一下。rpm包下载地址&#xff08;http://mirrors.163.com/centos/7/os/x86_64/Packages/&#xff09; 1、使用X-ftp 或者WinSCP等可以连接上传的软件都可以首先连接服务器&#xff0c;这里我用的…...

定时器的小应用

第一个项目 第一步&#xff0c;RCC开启时钟&#xff0c;这个基本上每个代码都是第一步&#xff0c;不用多想&#xff0c;在这里打开时钟后&#xff0c;定时器的基准时钟和整个外设的工作时钟就都会同时打开了 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);第二步&…...

linux企业中常用NFS、ftp服务

1.静态ip配置 修改ip地址为静态vim /etc/sysconfig/network-scripts/ifcfg-enxxx BOOTPROTO"static" IPADDR192.168.73.10 GATEWAY192.168.73.2 # 该配置与虚拟机网关一致 NETMASK255.255.255.0重启网卡&#xff1a;systemctl restart network.service ping不通域名…...

数据结构与算法分析模拟试题及答案5

模拟试题&#xff08;五&#xff09; 一、单项选择题&#xff08;每小题 2 分&#xff0c;共20分&#xff09; &#xff08;1&#xff09;队列的特点是&#xff08;   &#xff09;。 A&#xff09;先进后出 B&#xff09;先进先出 C&#xff09;任意位置进出 D&#xff0…...

.NET 9.0 中 System.Text.Json 的全面使用指南

以下是一些 System.Text.Json 在 .NET 9.0 中的使用方式&#xff0c;包括序列化、反序列化、配置选项等&#xff0c;并附上输出结果。 基本序列化和反序列化 using System; using System.Text.Json; public class Program {public class Person{public string Name { get; se…...

Python自动检测requests所获得html文档的编码

使用chardet库自动检测requests所获得html文档的编码 使用requests和BeautifulSoup库获取某个页面带来的乱码问题 使用requests配合BeautifulSoup库&#xff0c;可以轻松地从网页中提取数据。但是&#xff0c;当网页返回的编码格式与Python默认的编码格式不一致时&#xff0c…...

11.12机器学习_特征工程

四 特征工程 1 特征工程概念 特征工程:就是对特征进行相关的处理 一般使用pandas来进行数据清洗和数据处理、使用sklearn来进行特征工程 特征工程是将任意数据(如文本或图像)转换为可用于机器学习的数字特征,比如:字典特征提取(特征离散化)、文本特征提取、图像特征提取。 …...

RAG经验论文《FACTS About Building Retrieval Augmented Generation-based Chatbots》笔记

《FACTS About Building Retrieval Augmented Generation-based Chatbots》是2024年7月英伟达的团队发表的基于RAG的聊天机器人构建的文章。 这篇论文在待读列表很长时间了&#xff0c;一直没有读&#xff0c;看题目以为FACTS是总结的一些事实经验&#xff0c;阅读过才发现FAC…...

【配置后的基本使用】CMake基础知识

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;各种软件安装与配置_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1.…...

ollama+springboot ai+vue+elementUI整合

1. 下载安装ollama (1) 官网下载地址&#xff1a;https://github.com/ollama/ollama 这里以window版本为主&#xff0c;下载链接为&#xff1a;https://ollama.com/download/OllamaSetup.exe。 安装完毕后&#xff0c;桌面小图标有一个小图标&#xff0c;表示已安装成功&…...

【项目开发】理解SSL延迟:为何HTTPS比HTTP慢?

未经许可,不得转载。 文章目录 前言HTTP与HTTPS的耗时差异TCP握手HTTPS的额外步骤:SSL握手使用curl测量SSL延迟性能与安全的权衡前言 在互联网发展的早期阶段,Netscape公司设计了SSL(Secure Sockets Layer)协议,为网络通信提供加密和安全性。有人曾提出一个大胆的设想:…...

2.STM32之通信接口《精讲》之USART通信

有关通信详解进我主页观看其他文章&#xff01;【免费】SPIIICUARTRS232/485-详细版_UART、IIC、SPI资源-CSDN文库 通过以上可以看出。根据电频标准&#xff0c;可以分为TTL电平&#xff0c;RS232电平&#xff0c;RS485电平&#xff0c;这些本质上都属于串口通信。有区别的仅是…...

Bootstrap和jQuery开发案例

目录 1. Bootstrap和jQuery简介及优势2. Bootstrap布局与组件示例&#xff1a;创建一个响应式的表单界面 3. jQuery核心操作与事件处理示例&#xff1a;使用jQuery为表单添加交互 4. Python后端实现及案例代码案例 1&#xff1a;用户登录系统Flask后端代码前端代码 5. 设计模式…...

Qt 之 qwt和QCustomplot对比

QWT&#xff08;Qt Widgets for Technical Applications&#xff09;和 QCustomPlot 都是用于在 Qt 应用程序中绘制图形和图表的第三方库。它们各有优缺点&#xff0c;适用于不同的场景。 以下是 QWT 和 QCustomPlot 的对比分析&#xff1a; 1. 功能丰富度 QWT 功能丰富&a…...

【STM32】MPU6050简介

文章目录 MPU6050简介MPU6050关键块带有16位ADC和信号调理的三轴MEMS陀螺仪具有16位ADC和信号调理的三轴MEMS加速度计I2C串行通信接口 MPU6050对应的数据手册&#xff1a;MPU6050 陀螺仪加速度计 链接: https://pan.baidu.com/s/13nwEhGvsfxx0euR2hMHsyw?pwdv2i6 提取码: v2i6…...

Oracle 单机及 RAC 环境 归档模式及路径修改

Oracle 数据库的使用过程中经常会根据需求的不同而调整归档模式&#xff0c;也经常会修改归档文件存放路径。 下面分别演示单机及 RAC 环境下修改归档模式及路径的操作步骤。 一、单机环境 1.查询当前归档模式及路径 SQL> archive log list Database log mode …...

已有网站备案更换idc 多久/seo关键词优化报价价格

很正常&#xff0c;自定义消息需要开发者在广播中做相应的处理才能收到&#xff01;...

黄山网站建设哪家好/百度一下百度主页度

ServiceStack框架提供三种模式的服务接口实现&#xff0c; REST 、Client 以及和WCF相兼容的SOAP WebService &#xff0c;这三种模式统称WebService&#xff0c;目前对于移动平台和云服务火爆的情形下&#xff0c;最为普及的是REST模式。WebService常用连接模式&#xff1a;R…...

网站建设与技术团队/怎么营销一个产品

文章目录信号分解为正交函数1 矢量的正交分解2 信号的正交分解3 帕斯瓦尔定理信号分解为正交函数 1 矢量的正交分解 &#xff08;1&#xff09;矢量正交 复习&#xff1a;两矢量V1V_1V1​与V2V_2V2​正交&#xff0c;夹角为90 两正交矢量的内积为零 &#xff08;2&#x…...

广东省建设职业注册中心网站/网站推广工具

下面我们就一起来看看高情商的人说早安语句&#xff0c;早上好高情商句子。1、幸福其实很简单&#xff0c;有时就在我们身边&#xff0c;只是我们没有觉察&#xff0c;也没有去珍惜&#xff0c;只是失去以后才发觉其可贵。2、现在无法触碰的难过&#xff0c;终将可当作笑话去讲…...

wordpress如何应用插件下载失败/网络推广工作好干吗

欢迎访问我的个人博客查看文章&#xff1a;崩天的勾玉站 java自学群: 973140560 —————————————————————— Java自学no.1———带你初步认识java什么是JavaJava定位Java特点JRE和JDK开发环境配置集成开发工具IDEAidea安装及使用教程初次使用idea创建包和类…...

wordpress 调出编辑器/厦门百度快照优化排名

Linux Framebuffer编程实例源码介绍程序要获取Framebuffer设备的相关参数信息的话&#xff0c;就要通过ioctl()系统调用来完成。头文件中定义了所有的ioctl命令字&#xff0c;但最常用的ioctl命令字是下面这两个&#xff1a;FBIOGET_FSCREENINFO和FBIOGET_VSCREENINFO。前一个返…...